Compare commits

..

890 Commits

Author SHA1 Message Date
Jian Qiu
cd04311b14 fix: task params nil params panic (#25697)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-09-18 11:27:13 +08:00
Zexi Li
16a6c438e6 fix(baremetal): ignore RetrieveStorages leftover diagnostics when disks match (#25696)
Only fail buildRaid when no disk is selected, matching CalculateLayout behavior.
2026-09-18 11:17:23 +08:00
Zexi Li
92e18c0e07 fix(aiproxy): clarify unavailable backend error message (#25683) 2026-09-13 22:32:17 +08:00
Zexi Li
7b80690bac fix(aiproxy): detect listen address (#25678) 2026-09-13 12:35:46 +08:00
Zexi Li
9883a6afec feat(aiproxy): allow listing virtual key token field (#25675)
Expose VirtualKey in list responses so clients can retrieve the token without a separate get.
2026-09-11 18:45:39 +08:00
Zexi Li
d5f3c8752f fix(llm): keep aiproxy routing across stop/restart (#25672)
Do not unsync or delete deployment ai_routing when replicas leave running; reconcile on running so routing/provider IDs stay stable.
2026-09-11 16:43:10 +08:00
Zexi Li
45fc5cf0d0 feat(llm): route MCP agent via aiproxy virtual key and routing id (#25665)
Support X-Ai-Routing-Id to pin ai_routing, treat empty model_pattern as non-wildcard, and wire MCP agent to aiproxy credentials instead of direct LLM api_key.
2026-09-11 10:13:45 +08:00
Jian Qiu
64801c02c1 fix: classic nic dhcp default gateway revisit (#25666)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-09-10 21:06:24 +08:00
Jian Qiu
8fdbce23d6 fix: keystone-role-assignments-list-scope (#25658)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-09-10 17:25:11 +08:00
Jian Qiu
82e3a751b2 fix(cloudid): omit clouduser secret from list and get responses (#25661)
Return console login details from the login-info action; skip secret in resource JSON and logs.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 17:24:22 +08:00
Jian Qiu
fd4f251d7a fix: keystone idp join project roles check (#25655)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-09-10 17:06:30 +08:00
Jian Qiu
d6dcae5da9 fix(llm): validate mcp agent server url and session endpoint (#25650)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 15:29:41 +08:00
Jian Qiu
f18dd74131 fix(llm): authenticate llm router agent route requests (#25648)
Fetch the agent with the caller session and check perform permission.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 14:44:38 +08:00
Jian Qiu
730fa194a5 fix(llm): require get permission when resolving llm_id (#25646)
Fetch the referenced LLM with the caller session before filling access URL fields.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 14:15:18 +08:00
Jian Qiu
4af0712a1b fix(identity): validate rolepolicy create and bind-role requests (#25643)
Require role_id and reuse the role add-policy checks when creating a binding.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 13:10:04 +08:00
屈轩
0b04770576 fix(region): convert kvm prefer storage (#25640) 2026-09-10 12:21:58 +08:00
Jian Qiu
94cff9d81e fix(identity): check assume login with system scope and target roles (#25636)
Keep the caller session when authorizing assume and reuse join-project role checks.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 12:14:23 +08:00
Jian Qiu
c47b7b3e06 fix(image): reject images that declare a backing file (#25634)
Treat a non-empty backing filename as unsupported on upload, convert, probe, and ceph cache.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 11:54:50 +08:00
Jian Qiu
83fd5378f5 fix: allow host networks no gateway (#25624)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-09-10 01:32:59 +08:00
Jian Qiu
6c441f09d9 fix: classic net distribute default route for default nic (#25616)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-09-09 22:28:38 +08:00
Zexi Li
8560cd8450 fix(region): include disabled hosts in isolated device usage stats (#25620)
Keep GPU/device usages consistent with hosts inventory; scheduling still uses enabled hosts only.
2026-09-09 22:27:46 +08:00
Jian Qiu
4aa916cc23 fix(container): validate host bind paths and create host-path files with argv (#25604)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 20:29:23 +08:00
wanyaoqi
c3da18df12 fix(region): set force stop default timeout 30s (#25613) 2026-09-09 20:28:14 +08:00
Zexi Li
884de1bc51 fix(llm): skip stale container status during pod transitions (#25610)
Watch container events and defer LLM status updates while the pod is starting/stopping, so exited leftovers are not treated as start_fail.
2026-09-09 16:51:57 +08:00
Zexi Li
cb876f036a fix(host): use assigned nvidia GPU memory for pod metrics (#25607)
Derive mem total from isolated-device quotas when available, and harden
losetup ListDevices against empty --json output.
2026-09-09 12:01:31 +08:00
Jian Qiu
4979e0f7b9 fix(guestfs): keep guest file deploy inside the mounted filesystem (#25601)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 23:47:10 +08:00
Jian Qiu
41d79c09d6 fix(identity): check SAML assertion issuer, audience, and optional signature (#25598)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:04:47 +08:00
屈轩
3597116f15 fix(region): support renew kvm vm (#25595) 2026-09-08 15:52:17 +08:00
Jian Qiu
c1e73206c8 fix(cloudcommon): fall back list query scope to the resource default view (#25589)
When admin or scope query parameters do not map to a concrete view, use the resource's own scope and keep owner filters applied.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 14:52:35 +08:00
wanyaoqi
a65fb1b852 fix(host): start new goroutine to stop guest (#25585) 2026-09-08 14:09:14 +08:00
Zexi Li
038e530ebc feat(llm): support force restart for LLM and deployments (#25582)
Allow force restart when instances are failed, protect restarting status
during sync, refresh GPU memory from deployment, and tolerate crash-loop
while waiting for service ready.
2026-09-07 21:13:46 +08:00
屈轩
27d6c94d7d fix(mcp-server): upgrade mcp lib (#25579) 2026-09-07 14:34:31 +08:00
Zexi Li
4ea6581102 feat(llm): allow disabling pod/container cgroup CPU and memory limits (#25576)
Inference SKUs default to off; SKU and CLI expose enable flags so hosts can skip CFS quota and memory hard limits when needed.
2026-09-07 13:04:13 +08:00
Jian Qiu
3e77511214 fix(apigateway): authenticate csrf resource requests with the caller session (#25568)
Align the csrf resource handler with other API resource handlers by requiring a token and forwarding with the caller's own session.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-07 12:13:32 +08:00
屈轩
4bf0b18ad0 fix(region): vendor update (#25572) 2026-09-07 10:28:48 +08:00
Jian Qiu
1dc0e3b5ec fix: module not found return 404 (#25560)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-09-04 19:55:06 +08:00
Jian Qiu
df217c1be2 fix: verify test revisit (#25564)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-09-04 19:40:01 +08:00
屈轩
adf05b2988 fix(region): esxi v2v prefer storage (#25556) 2026-09-04 17:33:39 +08:00
Jian Qiu
3c35e76604 fix(webconsole): authenticate sftp endpoints and check session owner (#25551)
The sftp list/download/upload endpoints were not protected by
authentication, only by the UUID4 session id. Anyone who learned the
session id (it appears in URLs and logs) could list, download and
upload files of the VM over the victim's active SSH/SFTP channel.

Wrap all three endpoints with auth.Authenticate and record the owner
of each sftp session at registration, so only the user who opened the
session can use it.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-04 13:45:50 +08:00
Jian Qiu
790d1437a8 fix(webconsole): validate ssh target ip against accessible resources (#25548)
The ssh console endpoint accepted a raw ip address in the URL path
and dialed it directly with user provided credentials, so any
authenticated user could use the webconsole service as an internal
SSH proxy, port scanner and credential brute-forcer.

Resolve the ip against hosts (access_ip) and servers (ip_addr)
visible to the user's session and require it to match one of them,
rejecting all other addresses.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-04 10:06:42 +08:00
Jian Qiu
5d5c052a9b fix(s3gateway): enforce signature freshness and single key decoding (#25536)
- Reject signed requests older or newer than 15 minutes (x-amz-date
  for v4, Date for v2), so intercepted valid requests can no longer
  be replayed indefinitely
- Decode the object key exactly once: r.URL.Path is already decoded
  by net/http and is the form the signature covers, decoding again
  let a signature for one key be replayed against another
  (e.g. %252e%252e%252f resolving to ../)
- Add unit tests for both behaviors

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-04 09:19:21 +08:00
Jian Qiu
3047bbdcda fix(webconsole): fetch kubeconfig with user session for k8s shell (#25539)
The k8s shell/log endpoints fetched the target cluster kubeconfig
with the admin session, bypassing RBAC and owner scope checks, so any
authenticated user could exec into pods and read logs of any
registered cluster.

Fetch the kubeconfig with the user's own session instead, so policy
checks and owner filtering apply, and command records are attributed
to the real user.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-04 09:18:17 +08:00
Jian Qiu
2321b65ee1 fix(webconsole): generate session key with crypto/rand (#25542)
The AES key encrypting all console session tokens was derived from
rand.Float32 with only about 24 bits of entropy, so it could be
recovered by brute force from a single known (session id, token)
pair and then be used to forge access tokens of arbitrary sessions.

Generate the key from 32 crypto/rand bytes instead (about 192 bits
of effective entropy). Sessions live in process memory only, so a
per-process random key is sufficient.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-04 09:17:22 +08:00
Jian Qiu
70391d0158 fix(webconsole): isolate RDP console sessions with unique ids (#25545)
RemoteRDPConsoleInfo.GetId() always returned an empty string, so all
RDP sessions were stored under the same key in the session manager:
any valid RDP access token resolved to whatever RDP session was stored
last, letting a user take over another user's console session
(host/port/username/password).

Give every RDP session a random UUID id and validate in
SSessionManager.Get that the presented access token is exactly the
one issued for the session, so sessions can not be reached by any
other token.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-04 09:16:43 +08:00
wanyaoqi
af794715fd fix(region): use host type hypervisor rather than kvm (#25533) 2026-09-03 23:54:21 +08:00
Jian Qiu
4f1706d285 fix(appsrv): do not honor CORS credentials for wildcard origins (#25517)
With cors_hosts unset (the default), the CORS middleware allowed all
origins and echoed the request origin together with
Access-Control-Allow-Credentials, so any website could make
authenticated cross-origin requests against the API with the user's
cookies.

Credentials are now only honored for explicitly listed origins:
with an empty or wildcard origin allowlist the middleware responds
with Access-Control-Allow-Origin: * and no credentials header.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-03 23:52:58 +08:00
Jian Qiu
d8facf9ffd fix: convert sql.ErrNoRows to 404 not found (#25524)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-09-03 23:50:55 +08:00
Jian Qiu
8cab0232c4 fix(notify): harden verification code generation and verification (#25528)
- Generate verification codes with crypto/rand instead of the
  predictable time-seeded math/rand
- Count failed verification attempts and invalidate the code after
  verify_max_attempts (default 5) failures, closing the unlimited
  online brute force of the 6-digit code at the login endpoint
- Delete the verification record after a successful check so codes
  are single use and can not be replayed within the validity window
- Add unit tests for code generation

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-03 23:48:40 +08:00
Jian Qiu
c053206af9 fix(hostimage): harden nbd export against command injection (#25531)
The nbd export endpoints interpolated the request disk_id into
shell commands (sh -c with the joined qemu-nbd command line, and
ps|grep for the process check), so a crafted disk_id could execute
arbitrary commands as root on the host image service.

- Require the disk_id to be a plain UUID in both export and close
  endpoints
- Run qemu-nbd with argv instead of sh -c
- Check the export process via its pid file and kill -0 instead of
  shell pipelines
- Add unit tests for the validation and the process check

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-03 23:47:31 +08:00
Zexi Li
a79c399c2f feat(llm): support cancel and resume for instant model import (#25520)
Allow deleting models to abort in-flight downloads, persist import input for resume-import after killed status, and clean up import cache on delete.
2026-09-03 20:14:35 +08:00
Jian Qiu
add8d8381f fix: mask tokens and passwords in logs (#25514)
Full session tokens were written to logs in policy.go, mcclient auth,
oidc handler and the webconsole session manager; guest root passwords
were logged by the linux fsdriver and the nbdkit mount command; MCP
tool arguments and full JSON-RPC bodies (which may contain
server-reset-password passwords) were logged by the llm agent.

Truncate tokens in log messages, drop or mask password values and
log only the tool/method name for MCP calls.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-03 19:27:34 +08:00
Jian Qiu
2b0d3d4362 fix(mcp-server): do not expose server-monitor as an MCP tool (#25512)
server-monitor sends arbitrary QMP/HMP commands (pmemsave, migrate,
etc.) to a running guest, which exceeds the semantics of monitoring.
As an MCP tool it could be triggered without human awareness through
LLM prompt injection or the tool-request endpoint.

Remove the mcp-desc registration tag from ServerMonitorOptions so
climcgen no longer registers the tool, drop its mention from the MCP
instructions, and add a regression test asserting it is not exposed.
The climc command and the permission-gated region API are unchanged.

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-03 19:21:31 +08:00
屈轩
413f014f9c fix(region): vmware vm nic sync (#25509) 2026-09-03 18:27:32 +08:00
Jian Qiu
32477e1620 fix(hostman): harden deployer command execution against shell injection (#25499)
- Quote the heredoc delimiter when writing deploy params to the
  deployer guest, so deploy content, passwords and other
  user-supplied values are written literally and shell expansions
  ($(...), backticks, $VAR) inside them are not evaluated by the
  remote shell
- Escape JSON passed via --deploy-params as a single POSIX shell
  word, preventing single quotes in user data from breaking out of
  the argument
- Add unit tests covering injection payloads

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-03 10:55:43 +08:00
Jian Qiu
4c3c641c97 fix(webconsole): harden climc shell command execution against injection (#25497)
- Run ssh via exec.Command argv instead of "bash -c" string
  interpolation, so user-supplied fields can no longer escape into
  local shell commands on the webconsole server
- Quote every interpolated value (env, command, args) as a POSIX
  shell word, so they stay literal data on the remote shell
- Validate username charset and limit target_ip to climc pod or container
- Add unit tests covering injection payloads

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-03 10:52:10 +08:00
Jian Qiu
919d2b9d56 fix: apigateway returns cors_hosts to browser (#25492)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-09-03 00:50:01 +08:00
Jian Qiu
4e798c8b95 fix: update rpm build scripts for openeuler (#25473)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-09-02 17:50:20 +08:00
Zexi Li
071e4fcb2d Automated cherry pick of #25479: Feat/aiproxy model context window (#25480)
* feat(aiproxy): expose catalog context window on AI models

Populate known 1M+ context windows in catalog seed data and return
context_window in AI model list/detail API responses.

* feat(aiproxy): add instance test-connectivity and set-models actions

Add provider instance test-connectivity using stored ai_key secrets,
and set-models to import selected catalog models while skipping
existing model_key rows. Register corresponding climc perform commands.
2026-09-02 17:43:42 +08:00
wanyaoqi
4126bd8494 fix(region): disable startrun snapshotsCleanup (#25448) 2026-09-02 15:59:16 +08:00
Zexi Li
90364a81df fix(cloudcommon): fix err shadowing in GetPropertyDistinctField (#25471) 2026-09-02 15:58:11 +08:00
屈轩
3bcd053ad5 fix(region): optimized cachedimage list (#25467) 2026-09-02 11:40:32 +08:00
屈轩
5ea244bc5c fix(region): support filter cloudprovider by regions (#25462) 2026-09-01 16:05:55 +08:00
屈轩
b3905f139e fix(region): vendor update (#25459) 2026-09-01 13:41:41 +08:00
屈轩
8b2994a380 fix(apigateway): update mcp api addr (#25455) 2026-09-01 13:41:14 +08:00
屈轩
637c5b15a2 fix(region): optimized cachedimage list (#25452) 2026-09-01 09:18:12 +08:00
Zexi Li
69f9ff2a61 feat(llm): add llm_sku clone API and climc support (#25444) 2026-08-27 19:01:15 +08:00
wanyaoqi
8abb4057f1 fix(region,host): optimize snapshot delete (#25441)
use rebase/commit merge backing chain instead of convert.
2026-08-27 16:22:54 +08:00
wanyaoqi
8f13c93e28 fix(region): batch detach isolated devices (#25434) 2026-08-27 13:48:53 +08:00
wanyaoqi
a61a824884 fix(region): set default stop time 300s (#25431) 2026-08-26 15:15:33 +08:00
Jian Qiu
cc2cd72a2f fix: allow empty host networks (#25427)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-08-26 14:39:06 +08:00
屈轩
fa594fe753 fix(region): not real delete glance cachedimage (#25425) 2026-08-25 14:59:03 +08:00
wanyaoqi
24a245fd4f fix(host-deployer): no noeed clean failed mountpoints (#25421) 2026-08-25 11:35:02 +08:00
Jian Qiu
dbb6c4a17b fix: allow create-disk without disk args (#25414)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-08-24 15:48:00 +08:00
屈轩
139df655b7 fix(region): v2v migrate uefi check (#25418) 2026-08-24 15:40:51 +08:00
屈轩
04c6ed26bf fix(glance): avoid receive notify when glance restart (#25411) 2026-08-24 15:05:14 +08:00
wanyaoqi
8bff91b52d fix(host-health,region): host health detect network available add check peers and default gw (#25384) 2026-08-24 14:34:20 +08:00
屈轩
2898cdb20a fix(region): skip hostlocal wire when detect vmware net (#25406) 2026-08-24 14:19:39 +08:00
屈轩
c8ddc8665f fix(region): show more error info for vmware net detect (#25402) 2026-08-24 10:21:33 +08:00
Zexi Li
9f318bbff6 feat(llm): merge SKU envs into container and validate prefer_hosts updates (#25388)
Allow local_path SKUs to update prefer_hosts on edit, and overlay SKU envs onto the primary container with same-key override.
2026-08-21 14:27:42 +08:00
Jian Qiu
8081f677c7 fix: unhandled errors (#25379)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-08-20 17:30:49 +08:00
Zexi Li
a2d0a0a799 fix(host): skip unmanage interface when bridge slave has no address (#25381)
Only call tryUnmanageInterface when the slave interface has IPv4 or IPv6
addresses configured, avoiding unnecessary NetworkManager unmanage on
address-less interfaces during bridge setup.
2026-08-20 17:27:10 +08:00
屈轩
d109f5bf35 fix(region): skip sync cloudpods kvm secgroup (#25378) 2026-08-20 10:45:13 +08:00
wanyaoqi
8aed63bd0d Automated cherry pick of #25365: fix(region,host): guest stop add timeout options,and check is_force (#25368)
* fix(host): check qga guest-get-osinfo error

* fix(region,host): guest stop add timeout options and is_force check
2026-08-20 10:15:27 +08:00
屈轩
c241fc1210 fix(region): support cloudpods ipset (#25374) 2026-08-19 18:56:38 +08:00
Zexi Li
388bba8e85 fix(scheduler): report HAMI hostFree before min-memory filter (#25370)
Shortage messages now show remaining GPU memory from matched devices
before min-memory filtering, so users see actual free capacity instead of 0.
2026-08-19 16:40:13 +08:00
Jian Qiu
945a042676 fix: storage set metadata in post_create (#25363)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-08-19 16:28:31 +08:00
Jian Qiu
0a06731b8d fix: deploy qga path not found error (#25350)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-08-19 13:24:02 +08:00
Zexi Li
425231aa64 feat(llm): check sku schedule info (#25361) 2026-08-19 12:18:07 +08:00
Zexi Li
89c3068a38 fix(aiproxy): remove 30-day limit on custom usage range (#25355)
Allow querying usage statistics over custom date ranges longer than 30 days.
2026-08-17 16:59:56 +08:00
wanyaoqi
f19c914dce Automated cherry pick of #25347: fix(host): add options enabel vendor/device pt usb dev (#25348)
* fix(host): add options enabel vendor/device pt usb dev

* fix(host): add audio device for spice driver
2026-08-16 11:24:10 +08:00
Jian Qiu
73265ea559 fix: disk backup filter by server_id (#25344)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-08-15 09:37:48 +08:00
Jian Qiu
636b81973c feature: support idp driver attribtue_names (#25333)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-08-15 00:15:56 +08:00
wanyaoqi
d7e4a43b9b Automated cherry pick of #25313: Fix/device add params2 (#25314)
* fix(host): device add params use interface

* fix(host): ide device addr
2026-08-15 00:15:40 +08:00
屈轩
ce2c4a588f fix(glance): detect windows iso (#25342) 2026-08-14 19:01:53 +08:00
Zexi Li
f6edc92c62 fix(monitor): nodata 告警补充 ResIdKey 与 AlertDetails (#25338)
为 CommonAlertMetricDetails 填充资源 ID tag,并在无数据评估匹配中序列化 AlertDetails,便于下游定位资源。
2026-08-14 16:08:57 +08:00
屈轩
4096e77d48 fix(glance): iso image detect (#25331) 2026-08-14 14:55:26 +08:00
屈轩
82b468de2e fix: update telegraf version (#25324) 2026-08-14 14:53:25 +08:00
Zexi Li
5b6170421e feat(aiproxy): encrypt ai_key and virtual_key secrets at rest (#25326)
Store provider secrets and virtual keys encrypted with AES, add hash-based VK lookup, and migrate existing plaintext rows on init.
2026-08-14 14:40:22 +08:00
Zexi Li
72eb994f68 feat(aiproxy): migrate catalog resources to virtual resource base (#25317)
Give ai providers/models/keys/routing-models project scope with tenant backfill, and pass project/domain on LLM sync upserts.
2026-08-14 10:43:15 +08:00
屈轩
b12fe78267 fix(cloudmon): cloudpods metric pull delay time (#25320) 2026-08-14 10:38:04 +08:00
屈轩
be6ae61ea4 fix: mcp streamable (#25312) 2026-08-13 16:37:34 +08:00
wanyaoqi
56a5dbcaaf fix(region): server-create add src ip/mac check (#25303) 2026-08-13 10:10:31 +08:00
Zexi Li
9db72a1b5c feat(llm): sync isolated devices by sharing_mode on restart (#25306)
Respect sharing_mode when attaching/restoring GPU devices in compute,
and sync LLM guest devices with SKU config instead of only detaching
when empty.
2026-08-12 20:17:07 +08:00
Zexi Li
1baffa21e6 feat(k8s): add cluster history-data-clean climc command (#25301) 2026-08-11 13:55:28 +08:00
Jian Qiu
dc12c191fd fix: dhcp distribute static routes on condition (#25294)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-08-10 10:31:15 +08:00
Zexi Li
b19a23c701 Automated cherry pick of #25222: fix(baremetal): add IPMI LAN channel discovery with fallback (#25293)
* fix(baremetal): add AllowFallback guard for OEM profile LAN channel authority

OEM/model profiles are authoritative allowlists; their LanChannels must not be overridden by the fallback 1..11 scan. Add AllowFallback bool to LanConfigSelectionOptions, wrapping the fallback scan in a conditional. When false (default), only preferred and persisted channels are probed.

* fix(baremetal): set AllowFallback on ipmiprobe and manager callers

manager.checkIpmiInfo: AllowFallback=false (profile always present). ipmiprobe.doRawIpmiProbe: AllowFallback=profile==nil (fallback only when no profile exists).

* fix(baremetal): set AllowFallback=false in configIPMISetting, cleanup bm_register

configIPMISetting: AllowFallback=false (profile always present). bm_register.updateIpmiInfo: replace profile-based channel scan with GetLanConfig on the registered channel directly.

---------

Co-authored-by: Bo Xu <i@186526.xyz>
2026-08-07 18:26:02 +08:00
Zexi Li
e8f046de4f fix(baremetal): tolerate ipmitool exit 1 when lan output is usable (#25290)
Some BMCs return exit status 1 from ipmitool lan print even with valid
LAN config, which caused IPMI probe to fail with no IPMI lan NotFoundError.
2026-08-07 17:22:30 +08:00
Zexi Li
9d0b4bb975 fix(lbagent): generate valid UDP health check config (#25288)
Signed-off-by: DadaVinqi <DadaVinqi@users.noreply.github.com>
Co-authored-by: DadaVinqi <DadaVinqi@users.noreply.github.com>
2026-08-07 14:31:20 +08:00
屈轩
50d78a7985 fix(region): change config stop options check (#25286) 2026-08-06 17:32:35 +08:00
wanyaoqi
3d173686fc fix(host): e1000 nic add hotplug support (#25282) 2026-08-06 10:48:36 +08:00
Zexi Li
5ea8def943 fix(llm): detach stale GPUs when effective devices are empty on restart (#25279)
Avoid keeping bound isolated devices after SKU/LLM devices are cleared;
desktop container setup now follows effective devices only.
2026-08-06 10:02:09 +08:00
Zexi Li
bd33225ed0 fix(aiproxy): keep weight=1 keys selectable after health penalty (#25275)
Integer truncation of base*mul/maxScore can yield 0 for weight=1 keys,
permanently excluding them; floor effective weight at 1 when mul > 0.
2026-08-04 20:24:58 +08:00
wanyaoqi
874f82dfac fix(host): slvm create from snapshot (#25266) 2026-08-04 10:23:14 +08:00
Zexi Li
9e89074f86 feat(host): support Hygon DCU HAMI vdev core allocation (#25273) 2026-08-04 10:20:41 +08:00
wanyaoqi
bd3a1d0de9 feat(glance): support nfs as backend storage (#25242) 2026-08-03 16:01:01 +08:00
Jian Qiu
e6621aacf0 fix: region backward compatible fields for isolated_devices (#25262)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-08-03 15:45:47 +08:00
Zexi Li
97fc254cf5 fix(llm): derive aiproxy upstream model key from local_path sku (#25271) 2026-08-03 15:44:45 +08:00
Zexi Li
3d3ae1ef0c feat(llm,host): support Hygon DCU runtime for vLLM containers (#25259)
Wire vendor on LLM SKU devices, resolve supplemental groups for DCU
access, source DTK env in vLLM entrypoint, and add hysmi telegraf metrics.
2026-08-02 13:51:58 +08:00
wanyaoqi
77aa8c9471 fix(region,host,monitor): hami misc fix (#25256)
- npusmi monitor support
2026-07-31 10:10:35 +08:00
Zexi Li
8d490d5a3a fix(seclib2): support Ed25519 encryption (#25253)
Handle Ed25519 public and private keys in the AES-based encryption path.

Add round-trip coverage for OpenSSH and PKCS#8 private keys.

Co-authored-by: hechang <117586514+Haibersut@users.noreply.github.com>
2026-07-30 10:35:36 +08:00
Jian Qiu
2911f92f9b fix: handle host listen interface and master nic (#25248)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-07-29 23:46:26 +08:00
Zexi Li
c1980ee7fe feat(host): support Hygon DCU isolated device and HAMI (#25246)
Add Hygon DCU container device passthrough, HAMI vGPU sharing, vendor
field/filter on isolated devices, remote path helper, and LLM SKU mapping.
2026-07-29 19:01:41 +08:00
Zexi Li
203f5bb396 fix(llm): require memory_mb for local_path HAMi devices (#25244)
local_path SKUs cannot estimate VRAM from InstantModel; validate HAMi devices set devices[].memory_mb on create/update and deployment.
2026-07-29 10:22:39 +08:00
wanyaoqi
4a729a7639 Automated cherry pick of #25206: fix(region,host): host register with correct hostname (#25232)
* fix(region,host): host register with correct hostname

* fix(region): guest migrate reuse create params schedtag
2026-07-28 10:59:34 +08:00
wanyaoqi
712ce702ce feat(host): support ascend npu hami (#25236) 2026-07-28 10:55:50 +08:00
Zexi Li
80ea7e60e1 feat(baremetal): support IPMI RMCP+ cipher suite probe and persist (#25238)
Auto-detect working ipmitool -C suites (0/3/17) and store cipher_suite on host IPMI config for subsequent connections.
2026-07-28 10:27:06 +08:00
屈轩
daf21aa6a3 fix(climc): climc options update (#25228) 2026-07-27 19:41:40 +08:00
wanyaoqi
6bc05ca5c1 fix(host): qmp device add convert string to boolean (#25231) 2026-07-27 19:08:27 +08:00
Zexi Li
ea0e1ca42f fix(aiproxy): avoid permanent ai_key blacklist and clarify skip reasons (#25224)
Enter cooldown when health score hits zero so keys can recover, and include concrete skip reasons in resolve errors.
2026-07-27 12:15:55 +08:00
Jian Qiu
94862f5232 feature: ip set support (#25219)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-07-24 16:34:50 +08:00
Jian Qiu
887bb943b8 fix: vpc distributes static routes (#25212)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-07-23 19:12:22 +08:00
Zexi Li
205dbe2f64 feat(llm): support hami (#25214) 2026-07-23 17:08:26 +08:00
Jian Qiu
554cdd01be fix: baremetal use legacy http client (#25209)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-07-23 16:33:36 +08:00
屈轩
da03a421a5 fix(region): vendor update (#25205) 2026-07-22 11:19:14 +08:00
Jian Qiu
06517e5aa6 fix: allow empty ip on link-local nic (#25201)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-07-22 11:06:30 +08:00
屈轩
6d49bee5e6 fix(region): vendor update (#25198) 2026-07-21 23:38:10 +08:00
屈轩
033408e7d0 fix(mcp-server): optimized mcp desc (#25195) 2026-07-21 16:19:30 +08:00
屈轩
fe1846f690 fix(mcp-server): support forwarding mcp-server request (#25192) 2026-07-21 13:27:46 +08:00
屈轩
7aa20811f5 fix(mcp-server): optimized mcp server options (#25189) 2026-07-20 20:58:37 +08:00
屈轩
93971e83fb fix(mcp-server): mcp use climc struct (#25185) 2026-07-20 17:17:27 +08:00
wanyaoqi
1950824dfa feat(region,host,scheduler): isolated device refactor and hami support (#25181) 2026-07-20 13:20:49 +08:00
wanyaoqi
7fec30216b fix(host-deployer): bond netplan add vlan subinterface config (#25179) 2026-07-20 12:19:46 +08:00
wanyaoqi
23e1910817 fix(region): baremetal boot mode decided by selected host on image support both uefi&bios (#25167) 2026-07-20 12:07:39 +08:00
wanyaoqi
a8f3474fb2 fix(host-deployer): windows disk extend separate partition and filesystem (#25168) 2026-07-20 12:06:33 +08:00
wanyaoqi
bee68803b2 fix(host): add nest virtualization options (#25169) 2026-07-20 12:03:50 +08:00
wanyaoqi
f58fcc2999 fix(region): disk change driver support change aio_mode and cache_mode (#25170) 2026-07-20 11:57:55 +08:00
屈轩
fcbf833fde fix(mcp-server): query scope params (#25173) 2026-07-17 00:26:57 +08:00
屈轩
af2e410c24 fix(cloudid): batch detach policy (#25165) 2026-07-16 19:27:36 +08:00
屈轩
f6e32e7707 fix(region): support cas hypervisor (#25162) 2026-07-16 19:08:01 +08:00
Zexi Li
277546c95c fix(aiproxy): emit done events before response.completed in stream converter (#25159)
Emit output_item.done, reasoning_summary_part.done, function_call_arguments.done,
and related finalize events for text, reasoning, and tool calls before the
response.completed event to match the Responses API stream contract.
2026-07-16 17:04:02 +08:00
Zexi Li
98d4515548 feat(aiproxy): auto-provision placeholder ai_key for upstream resolve (#25155) 2026-07-15 19:24:43 +08:00
cwz_eikoh
e6c6f66760 feat(llm): add llm-router-agent (#25149) 2026-07-15 15:32:45 +08:00
cwz_eikoh
f3bc838d41 feat(llm): support llm-bench in llm (#25147) 2026-07-15 15:03:15 +08:00
Zexi Li
5505986263 feat(aiproxy): support streaming responses for visual messages (#25145)
* feat(aiproxy): support streaming responses for visual messages

* refactor(aiproxy): share API log helpers and support input/output token usage

Extract common chatlog record lifecycle across proxy handlers, and fall back
to Responses/Anthropic usage field aliases when filling token counts.
2026-07-15 10:57:37 +08:00
Zexi Li
83f4518355 feat(aiproxy): move visual provider to model columns and support streaming responses (#25143)
Promote visual_provider_id/visual_model_key to dedicated ai_model columns,
force non-stream upstream orchestration for visual paths, and synthesize SSE
chunks for streaming Responses requests that include images.
2026-07-14 18:39:44 +08:00
Zexi Li
b4e5fbb0b7 refactor(aiproxy): rename chat log config to API log with S3 fields (#25132)
* refactor(aiproxy): rename chat log config to API log with S3 fields

* feat(aiproxy): add visual extension for Responses image tools

Wire visual model catalog, orchestration, and OpenAI Responses compat so chat/Codex can invoke image generation and editing tools.
2026-07-14 11:52:43 +08:00
wanyaoqi
6e889e9cfa fix(region): reset guest quorum child index on guest shutdown (#25134) 2026-07-14 00:08:59 +08:00
屈轩
c75cfb4ca1 fix(region): split sync and probe worker (#25101) 2026-07-13 13:59:34 +08:00
Jian Qiu
2e28bd7ca7 fix: allow security group cidr have multiple prefixes (#25123)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-07-13 13:58:51 +08:00
Zexi Li
e73cb9dc43 feat(aiproxy): add Z.AI / Zhipu provider with dual OpenAI and Anthropic API modes (#25130)
Register zhipu as a public OpenAI-compat provider with GLM catalog seeds,
Anthropic passthrough routing, and v4-style base URL path handling.
2026-07-13 11:25:09 +08:00
Zexi Li
0d58ed4ccb feat(aiproxy): add OpenAI Responses API with provider adapters and Codex support (#25121)
Implement /v1/responses endpoint with multi-provider translation (OpenAI, Azure,
Anthropic, Gemini), streaming compat layers, Codex config/tool integration, and
updated functional test docs.
2026-07-10 16:40:42 +08:00
Jian Qiu
5bc80cfb42 fix: allow deleting idp without checking project count (#25109)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-07-10 08:35:32 +08:00
屈轩
214a606991 fix(region): gcp network tags (#25120) 2026-07-09 17:11:25 +08:00
屈轩
60bc65da31 fix(yunionconf): batch import tags (#25117) 2026-07-09 16:43:06 +08:00
Jian Qiu
ff9268966c fix: host order by sql redundant group by (#25113)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-07-09 14:22:38 +08:00
cwz_eikoh
e0b568d0ed feat(aiproxy): support log record in aiproxy through minio (#25115) 2026-07-09 13:01:35 +08:00
Jian Qiu
95f4bcf1f0 fix: lb listener rule specific certificates (#25105)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-07-08 12:03:36 +08:00
Zexi Li
f538dcf2e6 feat(aiproxy): add Anthropic Messages API and migrate functional tests to Go (#25097)
Add /v1/messages handler with Anthropic-to-OpenAI translation, upstream
failover, and probe endpoints. Replace shell-based functional test scripts
with pkg/aiproxy/ft and climc test commands; consolidate documentation.
2026-07-07 20:13:03 +08:00
屈轩
8c87c0e57d fix(region): pve host driver compatibility (#25099) 2026-07-03 15:37:58 +08:00
Zexi Li
c91b5bc70c feat(llm): add ModelScope instant model import and refactor model download (#25091)
Add ModelScope hub integration, download driver, and instant model import
flow parallel to HuggingFace. Extract shared HuggingFace download helpers
and reuse them across vLLM/SGLang container drivers.
2026-07-01 20:12:59 +08:00
Zexi Li
f1f3c1df2a feat(llm): support local_path scheduling with prefer_hosts and deployment restart (#25085) 2026-07-01 13:11:02 +08:00
wanyaoqi
f6e5f71fba fix(host-deployer): mount procfs before deploy guestfs (#25086) 2026-07-01 00:53:31 +08:00
Zexi Li
00bcdae23f feat(scheduler): append GPU reserved resource hints on predicate failure (#25083) 2026-06-30 15:40:34 +08:00
Zexi Li
3413845e96 feat(llm): backfill orphan LLM instances into deployments on init (#25079)
On service startup, find LLM instances without llm_deployment_id and
create a matching SLLMDeployment, then link the instance. Idempotent
across restarts; skipped on slave nodes.
2026-06-29 11:26:16 +08:00
wanyaoqi
b47a802515 fix(host-deployer): do base64 windows password (#25070) 2026-06-27 06:48:35 +08:00
屈轩
90ea5b77b0 fix(region): quota check (#25076) 2026-06-26 13:05:30 +08:00
wanyaoqi
372fae41c6 fix(region,host): kvm guest change disk driver reset uefi vars (#25068) 2026-06-26 10:20:25 +08:00
wanyaoqi
3b796dc0e8 fix(host): qemu set multifd before start incoming migration (#25064)
use drive mirror do block migration
2026-06-26 10:18:45 +08:00
Zexi Li
d3b4ab273a Automated cherry pick of #25074: feat(llm): tool call defaults & auto gpu ultilization (#25075)
* feat(llm): upgrade auto-gpu-ultilization

* feat(llm): add vllm tool call defaults

* feat(llm): add sglang tool call defaults

---------

Co-authored-by: cwz <cwz_eikoh@163.com>
2026-06-26 10:15:55 +08:00
Zexi Li
686b0f3872 feat(llm): async instant model delete and improve import status tracking (#25072)
fix(aiproxy): set OpenAI handler process timeouts and skip upstream error
response when request context is already cancelled.
2026-06-25 19:52:28 +08:00
Zexi Li
b52aa5de85 feat(llm): validate GPU devices on deployment create and improve error messages (#25062) 2026-06-24 14:26:18 +08:00
wanyaoqi
043eac88ba fix(region): snapshot validate add check guest is quorum master guest (#25052) 2026-06-24 10:30:14 +08:00
cwz_eikoh
c3db76457d Automated cherry pick of #25016: Feature/http get+llm probe (#25045)
* hostman: probe http get in pod netns

* llm: watch pod status for service readiness
2026-06-23 19:40:46 +08:00
屈轩
854b93e3a4 fix(region): filter sku by zone ids (#25061) 2026-06-23 15:14:51 +08:00
Zexi Li
5a4bbefe72 fix(aiproxy): defer stream context cancel until chunks are consumed (#25058) 2026-06-23 14:09:37 +08:00
Zexi Li
4237ce52ea feat(llm): sync llm deployment with aiproxy catalog and routing (#25013)
Add auto_register_aiproxy on llm_deployment creation, background sync task,
and register/unregister CLI actions. Link aiproxy providers, routings, and
models to llm replicas via llm_id and llm_deployment_id fields.
2026-06-22 19:35:50 +08:00
cwz_eikoh
d2bbda642b Automated cherry pick of #25044: Feature/llm route for aiproxy (#25046)
* feat(aiproxy): support routing model in aiproxy

* feat(llm): add llm-router
2026-06-22 10:09:58 +08:00
Jian Qiu
c6225bc046 fix: credential scope revisit (#25050)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-06-21 09:25:58 +08:00
wanyaoqi
c559974e44 fix(host): recycle servers dir on guest delete (#25022) 2026-06-21 08:34:26 +08:00
Jian Qiu
5392cfc8a9 fix: some host_type should consider container (#25048)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-06-20 09:47:47 +08:00
屈轩
9f0d1af484 fix(region): remove debug log (#25042) 2026-06-17 14:50:25 +08:00
屈轩
0956e660a4 fix(region): aws dedicated host sync (#25040) 2026-06-16 20:14:27 +08:00
屈轩
4bce487605 fix(compute): polish httperrors error messages in pkg/compute (#25036)
Unify spelling, grammar, and semantics of API error strings without changing error types or business logic.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-15 20:49:22 +08:00
屈轩
4e07d3b30c fix(region): vendor update (#25034) 2026-06-15 17:59:22 +08:00
Zexi Li
81ebea9451 feat(llm): add community images catalog API (#25030)
Expose llmimages.yaml as list/show/refresh endpoints with configurable
source URL, periodic cache refresh, and mcclient module support.
2026-06-15 17:26:25 +08:00
屈轩
acac258359 fix(region): filter sku by zone ids (#25029) 2026-06-15 15:50:46 +08:00
屈轩
c0f9765f9c fix(region): vendor update (#25027) 2026-06-15 14:58:14 +08:00
屈轩
fadd9b92f2 fix(region): struct tag fix (#25024) 2026-06-15 13:57:10 +08:00
wanyaoqi
a3a14bbed7 fix(region): guest detach isolated devices add is_force options (#25020) 2026-06-15 09:54:40 +08:00
屈轩
fc795b15c0 fix(region): disk througput sync (#25018) 2026-06-13 11:56:18 +08:00
wanyaoqi
8527232b7c fix(host): guest python launcher error (#25012) 2026-06-12 14:02:36 +08:00
屈轩
ded845a3dc fix(region): optimized sku query (#25009) 2026-06-11 14:31:29 +08:00
wanyaoqi
3172a1e86c fix(region): host model add api stats (#24955) 2026-06-09 23:01:40 +08:00
屈轩
7cff45fb5b feat(aiproxy): add aiproxy (#25003) 2026-06-09 18:54:54 +08:00
屈轩
5a2bfd9b5a fix(region): sku price (#25002) 2026-06-09 15:58:18 +08:00
Zexi Li
9f1e77deb6 feat(monitor): add tag name/id mapping in metric measurement API (#24999)
Return structured MetricMeasurementOutput with TagNameIdMap and
TagNameIdValueMap so callers can resolve resource names to IDs.
2026-06-09 15:14:35 +08:00
Zexi Li
72d7bd23b4 Automated cherry pick of #24985: Feat/deployment hostpath (#24993)
* feat(llm): hostpath support in deployment

* fix(llm): status error in deployment & sku deleted by deployment accidentally

---------

Co-authored-by: cwz <cwz_eikoh@163.com>
2026-06-08 11:23:48 +08:00
Zexi Li
51a85f66ba feat(host): support host_path detected in scheduler (#24992)
Co-authored-by: cwz <cwz_eikoh@163.com>
2026-06-08 11:01:14 +08:00
屈轩
035e31d9bf fix(region): avoid panic (#24989) 2026-06-08 10:58:27 +08:00
Zexi Li
3d086abf3e fix(host): rewrite vm_name in telegraf influx proxy after rename (#24983)
Sync host guest desc on local VM rename and correct vm_name (and
tenant_id) tags when metadata service proxies agent metrics to TSDB.
2026-06-08 10:43:18 +08:00
Jian Qiu
d9419958d7 fix: support ansible galaxy mirror (#24986)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-06-08 08:56:48 +08:00
屈轩
cfb9a97c78 fix(region): support rockbasecloud (#24984) 2026-06-05 19:28:48 +08:00
屈轩
957e785bd3 fix(monitor): skip disable account alert (#24980) 2026-06-05 16:14:28 +08:00
Jian Qiu
f082dc9b2d fix: lbagent service code typo 20260604 (#24976)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-06-05 01:13:36 +08:00
屈轩
f2d7af548e fix(region): prefer zones (#24972) 2026-06-04 18:52:01 +08:00
Zexi Li
e42070a852 fix(llm): 更新 model catalog 默认 URL 与 webtop 镜像同步 (#24973)
将 ModelCatalogURL 默认路径改为 model-catalog.yaml;
sync_llm_images 改为同步 fedora-xfce webtop 并注释其它候选镜像。
2026-06-04 18:51:12 +08:00
Zexi Li
a1ba61b875 fix(llm): container desktop (#24970) 2026-06-04 11:51:41 +08:00
Zexi Li
80dcd3ae42 fix(monitor): alert_state of resource metrics api (#24964) 2026-06-03 17:15:31 +08:00
屈轩
802062d0f7 fix(region): extend external_id to 512 (#24963) 2026-06-03 15:31:56 +08:00
Zexi Li
e3fb9b2295 feat(llm): container desktop (#24961) 2026-06-03 13:24:53 +08:00
屈轩
fa44e4502b fix(region): add cpu model nic bandwidth for server sku (#24954) 2026-06-03 10:59:55 +08:00
Jian Qiu
9908af95ea fix: compatibility issue with vms of empty hypervisor (#24957)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-06-03 09:57:39 +08:00
wanyaoqi
0759f3b2be fix(mps): parse pci addr convert to lower case addr (#24944) 2026-06-02 20:03:16 +08:00
wanyaoqi
b26e1568f7 fix(host): check cluster is valid before do qemuimg convert (#24946) 2026-06-02 20:01:40 +08:00
屈轩
0481bf291a fix(region): filter zone region by read only (#24951) 2026-06-02 11:15:27 +08:00
屈轩
65e5be3420 fix(region): support skip server sync by tags (#24949) 2026-06-02 11:07:36 +08:00
屈轩
adc2a468f9 fix(region): avoid create huawei windows server fail (#24940) 2026-06-01 15:52:48 +08:00
屈轩
da07addf18 fix(region): init cloudpods host type (#24934) 2026-05-31 14:17:35 +08:00
屈轩
07ca3b1520 fix(region): init external project (#24936) 2026-05-31 12:48:24 +08:00
cwz_eikoh
28b9e2e155 Automated cherry pick of #24924: Feat/auto gpu ultilization (#24929)
* fix(llm): support hf import llm_sku

* feat(llm): auto-gpu-memory-utilization
2026-05-29 17:45:48 +08:00
屈轩
c3fe7a6290 fix(host-deployer): lvm lock (#24927) 2026-05-29 15:01:20 +08:00
wanyaoqi
444cf1546c fix(host): guest sync override cpu_numa_pin before update (#24912) 2026-05-28 19:58:26 +08:00
屈轩
17445a6822 fix(region): add notices sync interval (#24923) 2026-05-28 19:48:09 +08:00
屈轩
07f434a96b fix(region): remove account id (#24920) 2026-05-28 17:40:14 +08:00
Zexi Li
fd50a6902c fix(ansibleserver): allow CreatorMark to be nullable in AnsiblePlaybookV2 (#24917) 2026-05-28 16:38:07 +08:00
Zexi Li
d87805622e Automated cherry pick of #24885: Feature/download progress (#24909)
* feat(llm): support download progress when model import

* fix(llm): unsupported catalog source \"ollama\" when model_set import llm_sku

---------

Co-authored-by: cwz <cwz_eikoh@163.com>
2026-05-27 13:20:54 +08:00
Zexi Li
8f46ef5098 feat(monitor): add ResourceMetricsDefaultInterval option (#24906) 2026-05-27 11:50:23 +08:00
屈轩
916463712a fix: upgrade go 1.26 (#24905) 2026-05-27 11:22:13 +08:00
Jian Qiu
f0647f6ee0 fix: throttle image cache progress callback to avoid download bottleneck (#24900)
When using S3/MinIO backend, the progress callback in AcquireImage was
called synchronously on every 4KB read chunk (via StreamPipe2). Each
call invokes UpdateServerProgress which makes a blocking HTTP PUT to the
compute API (~50ms), capping download speed at ~0.65 Mbps regardless of
available bandwidth.

Fix: throttle the callback to fire at most once every 5 seconds and make
the HTTP call asynchronous (goroutine), matching the behavior of v3.11.x
which used a 1-second ticker with async callbacks.

Fixes #24897

Co-authored-by: Mrliuch <liu15094534492@gmail.com>
2026-05-26 15:09:00 +08:00
屈轩
208acd9463 fix(region): skip useless addition network wire create (#24894) 2026-05-25 19:45:58 +08:00
Zexi Li
f314e7fa33 fix(host): aggregate same-type container devices for env config (#24891)
When multiple NVIDIA GPUs were attached to a container, each device was
passed individually to GetContainerExtraConfigures, producing one
NVIDIA_VISIBLE_DEVICES env per GPU. Duplicate env keys are collapsed by
the runtime to the last value, so the container only saw one GPU even
though the spec listed all of them.

Group RestDevs by DeviceType and invoke GetContainerExtraConfigures
once per type so all GPU UUIDs are joined into a single
NVIDIA_VISIBLE_DEVICES value.
2026-05-25 17:29:53 +08:00
Zexi Li
4c0dd07a91 feat(llm,scheduler): vram calculation (#24884) 2026-05-25 16:27:20 +08:00
Jian Qiu
959e03cccf fix: disable s3 direct download default (#24887)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-05-25 10:04:06 +08:00
Zexi Li
ecdf0e824f feat(llm): auto append backend_parameters in vllm & sglang (#24883)
Co-authored-by: cwz <cwz_eikoh@163.com>
2026-05-22 17:02:18 +08:00
Zexi Li
b7c90351a1 fix(region): prefer check_code series for lb backend check_status (#24877) 2026-05-22 14:17:14 +08:00
Jian Qiu
447c0a1f55 fix: set bridge up after created (#24873)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-05-21 20:30:26 +08:00
wanyaoqi
2eb6254b17 fix(scheduler): set options ContainerNumaAllocate default true (#24870) 2026-05-21 19:32:04 +08:00
Zexi Li
d41aa739ff feat(region,host): upload nvidia gpu memory size (#24866) 2026-05-21 16:20:22 +08:00
Zexi Li
7ed23c433d feat(hermes): connect vllm/sglang/ollama (#24863)
Co-authored-by: cwz <cwz_eikoh@163.com>
2026-05-21 11:41:22 +08:00
Zexi Li
c019216508 feat(llm): create llm_sku from llm_model_set (#24865)
Co-authored-by: cwz <cwz_eikoh@163.com>
2026-05-21 11:40:37 +08:00
Zexi Li
383764dbb6 feat(llm): Implement resumable downloads for models from Hugging Face (#24859)
Co-authored-by: cwz <cwz_eikoh@163.com>
2026-05-21 10:48:39 +08:00
wanyaoqi
955fc5ba54 fix(host): remove cgroup root path check quotation marks (#24852) 2026-05-21 10:33:17 +08:00
Zexi Li
b440adf404 fix(region): ensure lb backend check_status returned when check_code missing (#24854) 2026-05-21 10:18:36 +08:00
Zexi Li
9775565a53 feat(llm): llm deployemnt (#24847) 2026-05-20 11:06:13 +08:00
Jian Qiu
5cec665b48 Revert "fix: revert host masquerade setting (#24826)" (#24845)
This reverts commit a642560fce.
2026-05-19 20:57:43 +08:00
Zexi Li
e6be8d9146 fix(region): query metrics from monitor service (#24837) 2026-05-19 18:00:56 +08:00
Zexi Li
d38b835f8e fix(llm): persistent /config dir of hermes agent (#24834) 2026-05-18 14:57:26 +08:00
Zexi Li
3209292fc9 feat(climc): add generic feature-config command (#24829)
Add a generic `feature-config <feature> <on|off>` command alongside the
existing per-feature `feature-config-<name>` commands. A `--force` flag
skips the known-features validation so new features can be toggled
without a code change. Also adds "ai" to the known feature list.
2026-05-18 14:28:36 +08:00
Jian Qiu
a642560fce fix: revert host masquerade setting (#24826)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-05-15 01:57:02 +08:00
Zexi Li
41a5d7aa3f feat(llm): support sglang (#24822)
Co-authored-by: cwz <cwz_eikoh@163.com>
2026-05-14 17:07:37 +08:00
Jian Qiu
91fd01617f fix: lbagent keepalived service run may exit (#24805)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-05-13 12:08:08 +08:00
屈轩
144b0f11c2 fix(region): support stop for change vm config (#24816) 2026-05-12 20:08:11 +08:00
屈轩
240ca79b9a fix(region): update gp3 disk size (#24810) 2026-05-12 17:27:23 +08:00
Zexi Li
520bab0dca Automated cherry pick of #24801: Feature(vllm): use entrypint instead of StartLLM (#24803)
* feat(llm): use entrypoint instead of StartLLM

* feat(llm): adapt front-end in comfyui instant-model

---------

Co-authored-by: cwz <cwz_eikoh@163.com>
2026-05-12 10:46:03 +08:00
Zexi Li
48fcab103c fix(llm): honor SLLM device override when building container spec (#24798) 2026-05-11 20:06:12 +08:00
wanyaoqi
4ba4bb7d89 fix(host): remove -no-kvm args, -no-kvm argument was a synonym for setting -machine accel=tcg (#24788) 2026-05-11 20:00:44 +08:00
wanyaoqi
e1ca2530f7 fix(host): check is cpu hotplug support on guest init (#24786) 2026-05-11 19:59:35 +08:00
Zexi Li
f4503e2284 feat(llm): add SLLM mounted_models override and driver-level validation (#24795) 2026-05-11 17:41:05 +08:00
Zexi Li
310183aab2 feat(monitor): use GET for unifiedmonitors resource-metrics (#24781) 2026-05-08 16:19:22 +08:00
Zexi Li
e8cf980c79 fix(monitor): dedupe alert trigger condition in notify templates (#24778) 2026-05-07 15:52:01 +08:00
Zexi Li
dc4fd66eba Automated cherry pick of #24760: Feature/comfyui instant model (#24775)
* feat(llm): support cursor

* feat(llm): support import from huggingface

* fix(llm): direction error

* feat(llm): support instant model for comfyui

* feat(llm): support multi file select when save-instant-model

---------

Co-authored-by: cwz <cwz_eikoh@163.com>
2026-05-07 14:42:53 +08:00
wanyaoqi
12e8b22a24 feat(host): mps add container device configuration (#24772) 2026-05-07 10:03:18 +08:00
屈轩
c0400121b8 fix(esxi-agent): pve agent (#24769) 2026-05-06 17:15:41 +08:00
屈轩
0d77887890 fix(region): avoid vm set status start fail when serivce restart (#24765) 2026-05-06 12:41:00 +08:00
wanyaoqi
3774162bd8 fix(host): cpu hotplug compatible with high qemu version (#24758) 2026-05-03 23:22:01 +08:00
wanyaoqi
e935fc5689 fix(host): auto merge backinf file generate disks index (#24753) 2026-05-03 22:39:02 +08:00
Zexi Li
4eb015e649 fix(monitor): normalize resource-metrics alert_state (#24756)
Treat attach and init as init in PerformResourceMetrics output.
2026-04-30 18:42:01 +08:00
Zexi Li
0005ea8229 fix(monitor): support influxql derivative and difference function translation (#24748) 2026-04-30 13:11:45 +08:00
Jian Qiu
225791f78c fix: init ifb kernel module (#24745)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-04-29 23:48:59 +08:00
wanyaoqi
e9dde8eae6 fix(mcclient,region): add tasks mod, service app options (#24734) 2026-04-29 23:48:06 +08:00
屈轩
5375fff061 fix(region): optimized listener rule list (#24742) 2026-04-29 14:09:29 +08:00
Zexi Li
0f30ccf520 fix(host,llm): fix pod shm mount path return and llm restart memory config (#24737)
- Return shmPath instead of empty string when mountpoint is already
  mounted, so callers get the correct path
- Remove incorrect +1 offset in memory comparison and size formatting
  during LLM restart config change
2026-04-28 19:57:42 +08:00
Zexi Li
a403ad5091 fix(lbagent,monitor): use victoria-metrics for telegraf and fix influxql translation (#24732) 2026-04-27 16:41:55 +08:00
Jian Qiu
b1908b24e3 fix: create redirect lb listener fail (#24725)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-04-27 10:01:19 +08:00
屈轩
acdf623027 fix(region): lb redirect rule create validate (#24729) 2026-04-27 10:00:54 +08:00
wanyaoqi
e42d517b28 chore(host-deployer): update host-deployer-base to 1.5.9 (#24722) 2026-04-26 23:02:59 +08:00
Zexi Li
9be35e4b45 feat(llm): support OpenClaw manual config mode (#24719)
When ManualConfig is enabled, inject OPENCLAW_MANUAL_CONFIG=1 env var
and skip provider/channel credential injection, allowing users to
configure providers and channels themselves inside the desktop.
2026-04-24 11:45:46 +08:00
Zexi Li
67cceae9e2 Automated cherry pick of #24717: Feature/hf-search (#24718)
* llm: add instant-model huggingface query commands

* fix(vllm): use ping instead of health

---------

Co-authored-by: cwz <cwz_eikoh@163.com>
2026-04-24 10:28:34 +08:00
wanyaoqi
52bbe7c9a7 fix(host): usb device passthrough use hostport (#24708) 2026-04-23 13:52:49 +08:00
Jian Qiu
7e5f5cff5e fix: guest change ipaddr no-sync option (#24714)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-04-23 13:52:04 +08:00
Jian Qiu
bb7b50dbc0 fix: handling deleted task object (#24702)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-04-23 10:19:14 +08:00
屈轩
350412009e fix(notify): remove useless code (#24711) 2026-04-21 19:38:04 +08:00
Zexi Li
6372ef9819 refactor(llm): extract shared desktop webtop config (#24699)
Move common desktop/webtop container envs, base spec, rootfs, and login-info parsing
into llm_container helpers and reuse in openclaw and hermes-agent drivers.
2026-04-21 15:04:44 +08:00
Zexi Li
5577aefb22 fix(scheduler): refactor the pending usage logic (#24705) 2026-04-21 15:03:44 +08:00
Matt Gideon
cc1524a71f fix(host): fix isolated device detection regex for PCI and USB devices (#24692) 2026-04-20 14:22:38 +08:00
Zexi Li
23e21c2c16 feat(llm): support hermes-agent (#24696) 2026-04-20 12:47:23 +08:00
Zexi Li
2ee8ae31ad feat(llm): add hostpaths for llm-sku (#24695)
Co-authored-by: cwz <cwz_eikoh@163.com>
2026-04-20 10:51:40 +08:00
屈轩
c119af4b81 fix(region): show associate info (#24688) 2026-04-17 10:10:29 +08:00
Jian Qiu
e129e0477a fix: add version etc. aux handlers to mcp-server (#24686)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-04-17 09:59:56 +08:00
屈轩
c839d38f60 fix(region): vendor update (#24684) 2026-04-16 23:11:21 +08:00
Jian Qiu
54309f95f3 feature: support asymmmetric bandwidth limit (#24679)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-04-16 15:15:43 +08:00
Jian Qiu
ee66577d94 fix: climc container related commands improvements 20260414 (#24672)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-04-15 10:05:45 +08:00
屈轩
5a09e3d5c9 fix(region): sched fail notify (#24677) 2026-04-14 20:13:31 +08:00
屈轩
b55a9a5482 fix(region): disk fail notify (#24674) 2026-04-14 16:28:28 +08:00
Zexi Li
218c973638 fix(llm): harden volume resize and update size log (#24631)
- Wait for disk/desktop status after resize via backup worker
- Centralize volume SizeMB update with resize action log
- Expose vCPU/memory fields in LLM customize columns
2026-04-13 14:38:50 +08:00
Zexi Li
94d2e10f00 feat(climc): support setting rootfs sub_directory 2026-04-13 11:09:52 +08:00
Zexi Li
1b184d3ea7 fix(region): set rootfs default sub_directory (#24666) 2026-04-13 09:59:16 +08:00
屈轩
f8cab462c1 fix(esxi-agent): support esxi vm forder name same with vm name (#24664) 2026-04-13 09:50:48 +08:00
屈轩
255a1fe84f fix(region): support query public cloud vm modification types (#24654) 2026-04-10 16:54:24 +08:00
wanyaoqi
61b5b8b792 fix(region): optimize fetchHostGuestResource (#24633) 2026-04-10 16:53:03 +08:00
Zexi Li
6ccf058d5c fix(host): restart container on exit when AlwaysRestart is set (#24661) 2026-04-10 15:17:11 +08:00
Jian Qiu
258e47056c fix: vpcagent sync inconsistent networkaddress guestnetwork id (#24649)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-04-10 14:44:21 +08:00
屈轩
c568447a61 fix(mcp-server): update mcp docs (#24652) 2026-04-09 20:45:23 +08:00
屈轩
d2aef76bd5 fix(cloudmon): vendor update (#24643) 2026-04-09 16:33:12 +08:00
Jian Qiu
f9ac278ba3 fix: upgrade coredns to v1.10.1 at 4.0 (#24619)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-04-08 16:26:50 +08:00
Jian Qiu
05da992fba fix: undo pr 24532 (#24638)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-04-08 16:25:23 +08:00
wanyaoqi
99bef191f6 feat(host): container add rbd disk support (#24624) 2026-04-08 13:27:46 +08:00
屈轩
3f3c92fa7d fix(region): clean guest network when purge zone (#24627) 2026-04-07 20:55:45 +08:00
屈轩
c0c9ba6d78 fix(region): esxi wire sync (#24617) 2026-04-04 12:17:00 +08:00
Zexi Li
27874cdbeb feat(host): support CTyunOS rootfs (#24612) 2026-04-02 17:47:56 +08:00
屈轩
904ed8dd3a fix(region): vendor update (#24610) 2026-04-02 10:34:51 +08:00
Zexi Li
dffac28e32 feat(llm): get available models from base_url (for ollama & openai) (#24608)
Co-authored-by: cwz <cwz_eikoh@163.com>
2026-04-01 15:44:30 +08:00
Zexi Li
aa17f76589 fix(monitor): update silent_period when channel is empty (#24602)
silent_period is stored as Frequency on the notification, not on the
alert itself. PostUpdate only called UpdateNotification (which recreates
notifications with the new silent_period) when Channel was non-empty.
When channel was an empty array, the silent_period update was silently
skipped. Add an else-if branch to directly update the existing
notifications' Frequency when silent_period changes but channel is empty.
2026-03-31 20:00:39 +08:00
Jian Qiu
3553263bb6 fix(host): use findmnt instead of df to detect local mount point (#24599)
Co-authored-by: Haibersut <117586514+Haibersut@users.noreply.github.com>
2026-03-31 18:06:40 +08:00
Zexi Li
4f693c4641 feat(monitor): add batch resource metrics query API (#24596)
Add unifiedmonitor class action `resource-metrics` with client options/CLI command.
Implement host/guest metric drivers to query cpu/mem/disk/net rates and attach alert state.
2026-03-31 17:44:35 +08:00
Jian Qiu
11be1de968 fix: support build specific multi-arch buildx (#24588)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-03-31 17:43:09 +08:00
Jian Qiu
e1d108a7f0 fix: add customer usable filters that filter noaddr networks (#24585)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-03-31 17:27:47 +08:00
Zexi Li
ee98c29d9a fix(host): use proper shell quoting in pod tar/find commands (#24592)
Add shellQuote helper that safely escapes single quotes and apply it
consistently across tarGzDir and tarHostDir to prevent shell injection
via crafted paths, directory names, or exclude patterns.
2026-03-31 12:04:07 +08:00
Zexi Li
846ba369ac fix(host): get pod status by primary container status (#24581) 2026-03-30 16:21:18 +08:00
wanyaoqi
c61f5113d2 fix(host): add ovmf 4m code (#24575) 2026-03-30 07:54:08 +08:00
Zexi Li
e205da2232 fix(llm): 修复 llm 镜像没有根据 sku 更新的问题 (#24572) 2026-03-26 21:38:21 +08:00
屈轩
225de2334e fix(logger): add syslog init log (#24555) 2026-03-26 18:11:22 +08:00
wanyaoqi
9bb31f4b33 fix(region): validate kickstart enabled (#24558) 2026-03-26 18:09:41 +08:00
Zexi Li
9eaa72993b fix(region): order containers by created_at time (#24567) 2026-03-26 12:16:31 +08:00
Zexi Li
fb8a339cbb fix(keystone): allow blob update for image credentials (#24564)
Also fix type check to allow secret/image only.
2026-03-26 11:41:13 +08:00
屈轩
057e5ebeaa fix(region): add domain container usage (#24562) 2026-03-25 18:26:39 +08:00
Zexi Li
b1f7890324 fix(vllm): user customize args & health check in hostlocal net (#24553)
Co-authored-by: cwz <cwz_eikoh@163.com>
2026-03-25 10:36:46 +08:00
wanyaoqi
c1edcf27fe fix(host): metadata handler proxy telegraf data fix tenant_id (#24544)
* fix(host): metadata handler proxy telegraf data

* fix(host): append unknown dmesg to last entry
2026-03-25 10:34:09 +08:00
Jian Qiu
b45a5f7f9d fix: lbagent genHaproxyConfig possible nil pointer panic (#24537)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-03-25 10:32:41 +08:00
Jian Qiu
d73d3e0108 fix(hostmetrics): add checks for incomplete pod and container stats (#24549)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-03-25 10:31:07 +08:00
屈轩
84bbe1bfc1 fix(region): add container usage (#24542) 2026-03-25 10:23:27 +08:00
屈轩
b9ef8476f2 fix(host-image): update script for riscv64 host-image (#24535) 2026-03-24 11:37:36 +08:00
Zexi Li
7c26ab8db3 fix(host): probing multiple container status (#24529) 2026-03-24 10:27:06 +08:00
wanyaoqi
ab7210c6b6 fix(host): dd zero to lv wife partitions on lvremove (#24525) 2026-03-23 19:02:16 +08:00
wanyaoqi
c4a6c9ff8a fix(host-deployer): resizefs add fstype LVM2_member (#24516) 2026-03-23 00:00:17 +08:00
wanyaoqi
ec315b5516 fix(region): check instance snapshot joint is nil on snapshot purge (#24513) 2026-03-22 23:59:17 +08:00
屈轩
cb266540a1 fix(apigateway): stream download content-type (#24508) 2026-03-20 13:41:40 +08:00
Jian Qiu
64c362f20f feature: support host-local wire (#24497)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-03-20 01:36:42 +08:00
wanyaoqi
603f591ebf Cherry pick of #23094 upstream release 4.0 1770106850 (#24452)
* feat(region, climc): Add kickstart parameters and metadata

- Add kickstart parameters and metadata support
- Add kickstart CLI options and management commands
- Set kickstart metadata in PostCreate
- Add related kickstart metadata fields

* feat(host): Implement automated VM installation

- Mounts the installation ISO to a unique temp path, reusing existing mounts.
- Extracts kernel (`vmlinuz`, `initrd`) to configure QEMU boot.
- Injects kernel parameters to trigger the autoinstall.
- Add kickstart configuration validation.

Modified `guestLauncher` script to handle kernel parameters with spaces
that were previously truncated by the Python script.

* feat(host): Implement Kickstart monitoring

- Automatically updates the VM status upon
receiving `KICKSTART_SUCCESS` or `KICKSTART_FAILED` signals.
- On success, cleans up temporary mount points
and restarts the server via the Region API.

* feat(region): add kickstart type metadata

Adds the `VM_METADATA_KICKSTART_TYPE` to distinguish between
kickstart configurations passed by URL or by direct content.

* feat(host): Handle kickstart installing and timeout

- Set status to 'installing' upon successful kickstart boot
- Handle KICKSTART_INSTALLING serial message for status updates
- Add timeout handling for kickstart status monitoring

* feat(host): provide Kickstart config via content

Embed the provided config content as a file in a
labeled ISO (mkisofs), then mount the ISO during
the Kickstart installation to supply the config.

* refactor(host): Enhance the kickstart installation

- Integrates kickstart status directly into the VM status, replacing metadata.
- Unifies locations for kickstart logs and temporary files.
- Uses regex for more robust status matching.
- Moves helper functions to `kickstart_helper.go`.
- Fixes an incorrect kickstart configuration filename.
- Adjusts kickstart logging.

* feat(region, host): add kickstart support for openEuler

* refactor(host): extract kickstart cleanup function

* feat(region, climc): add kickstart-complete cli

Add this command to manually update the kickstart status and
reboot VM if needed. This is mainly used by users to manually
update the kickstart status when kickstart status detection is abnormal.

* refactor(region): reduce code duplication in Kickstart validation

- unify two validateKickstartConfig functions
- extract determineKickstartType function for type determination

* fix(region, host): fix kickstart auto-reboot

- Adjusted the timing of setting the status to
`kickstart_pending` to avoid incorrect reboot checks
- Skip setting kickstart if the status is already
`kickstart_completed` to prevent unnecessary reboots
- Added cleanup of kickstart files upon VM deletion

* feat(host): download kickstart config from URL

- download content when passing config via URL
- unified boot parameters

* feat(host): copy kickstart kernel files

* feat(host): ensure kickstart completion signal in config

---------

Co-authored-by: happygame <happygame1024@gmail.com>
2026-03-20 01:35:27 +08:00
wanyaoqi
9142916763 Fix/host deployer nbd driver40 (#24456)
* fix(host-deployer): nbd add concurrency control

* fix(host-deployer,glance): windows image add current version
2026-03-20 01:32:08 +08:00
Zexi Li
ef6241ac9b feat(llm): unify container access url info and login response (#24504) 2026-03-19 23:06:31 +08:00
wanyaoqi
508d4f7713 fix(host-deployer): get resize dev by serial panic (#24446) 2026-03-19 23:03:34 +08:00
cwz_eikoh
e3548b1830 Automated cherry pick of #24471: Feature(mcp): support x-api-key authentication for mcp-server (#24500)
* feat(mcp-server): support base64 ak/sk

* fix(mcp-agent): try to fix route of default-mcp-tools
2026-03-19 15:04:45 +08:00
cwz_eikoh
e3e04ab29d feat(llm): support model import for vllm (#24503) 2026-03-19 15:03:49 +08:00
wanyaoqi
8e83889c9f Automated cherry pick of #24473: fix(glance): cache images to ceph add brand filter (#24479)
* fix(glance): cache images to ceph add brand filter

* fix(region): iso image support default uefi boot mod
2026-03-19 11:45:43 +08:00
Jian Qiu
4314497e88 fix: logger add app-options-show api (#24493)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-03-19 11:43:55 +08:00
屈轩
f5beef50f5 fix(region): allow set disk auto-delete attribute (#24488) 2026-03-19 10:27:57 +08:00
Zexi Li
3e925b6d95 fix(llm): derive openclaw auth password from llm id (#24480) 2026-03-18 19:01:02 +08:00
屈轩
db451719dd fix(region): vendor update (#24485) 2026-03-18 18:52:18 +08:00
wanyaoqi
25fbf463bc fix(baremetal-agent): bm register reuse baseprepare updateBmInfo (#24474) 2026-03-18 10:10:31 +08:00
Zexi Li
bc9c5cf088 fix(monitor): align multi-metric alert conditions in notifications (#24468) 2026-03-17 15:57:19 +08:00
屈轩
5476c43cda fix: add more log info (#24461) 2026-03-17 14:38:57 +08:00
Zexi Li
354e3cd872 feat(llm): add llm_types filters and cleanup dify cli (#24457) 2026-03-16 17:01:36 +08:00
Zexi Li
8c6167bb7b feat(llm): 调整 openclaw 容器与 LLM 基础模型/sku 逻辑 (#24453) 2026-03-16 16:19:40 +08:00
Zexi Li
ace220a0ca fix(llm): mount openclaw home dir (#24449) 2026-03-13 20:38:28 +08:00
屈轩
f1df0e3ac1 fix(region): avoid delete ksyun vm error (#24441) 2026-03-13 15:23:11 +08:00
Jian Qiu
39f3853f3e fix: compat fixes for container host in vm (#24439)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-03-13 13:26:42 +08:00
cwz_eikoh
2c59756f75 Automated cherry pick of #24338: feat(llm): init vllm as llm_container (#24437)
* feat(llm): init vllm as llm_container

* feat(vllm): fix save-instant-model for vllm

* feat(llm): support quick-model for vllm

* feat(vllm): support preferred-model in llm

* fix(llm): add ValidateSpec in llm_container_driver

* feat(vllm): auto-set vllm params
2026-03-13 11:07:19 +08:00
Zexi Li
6c98f46671 feat(host): rotate container logs (#24432) 2026-03-12 15:14:49 +08:00
Zexi Li
25d1965950 feat(llm): add login-info api (#24429) 2026-03-12 07:20:43 +08:00
wanyaoqi
620814527a fix(region): guestnetworksecgroup list add network info (#24392) 2026-03-11 19:31:46 +08:00
wanyaoqi
c32b6792d9 fix(host): check file exist before copy ovmf vars (#24365) 2026-03-11 19:29:25 +08:00
Zexi Li
88f9b71e53 feat(llm): restart action (#24426) 2026-03-11 19:07:39 +08:00
屈轩
90cc427ad5 fix(cloudmon): update volc api (#24423) 2026-03-11 16:54:44 +08:00
Zexi Li
81d1308ddd openclaw llm agent (#24411)
* support comfyui and openclaw

feat(region,host): support env credential of container

feat(llm): openclaw url

* fix(region): delete server without host_id

* feat(llm): llm spec
2026-03-11 15:21:10 +08:00
屈轩
6b83d6148f fix(monitor): add vm out bandwidth metric (#24417) 2026-03-11 13:49:55 +08:00
屈轩
f2e3713e04 fix(region): vendor update (#24413) 2026-03-11 11:03:18 +08:00
屈轩
86ce69b4a1 fix(region): persistence server status change (#24409) 2026-03-10 15:06:47 +08:00
Zexi Li
804cbbfd45 Automated cherry pick of #24399: feat(llm): polymetric dify with llm (#24405)
* feat(llm): polymetric dify with llm

* fix(llm): drop LLMSpecHolder & fix some bugs

---------

Co-authored-by: cwz <cwz_eikoh@163.com>
2026-03-10 10:23:44 +08:00
Zexi Li
93820a5af4 fix(region): associate eip to pod (#24402) 2026-03-09 15:23:57 +08:00
Zexi Li
6eca607a9b fix(monitor): 仅在 From/To/Interval 为空时设置默认值 (#24395)
setDefaultValue 中 From、To、Interval 改为仅在当前值为空时
才用 inputQuery 覆盖,避免覆盖用户已指定的查询时间范围与间隔
2026-03-06 19:13:10 +08:00
Zexi Li
b7d7a1aa16 fix(host): hard code start index of va gpu 2026-03-05 11:49:02 +08:00
Zexi Li
5b4f6f1f72 feat(host): cgroupv2 implemented for pod (#24116) 2026-03-04 11:21:42 +08:00
cwz_eikoh
64d3842c93 Automated cherry pick of #24355: fix: some bugs in mcp-agent & llm (#24383)
* fix(mcp-agent): encoding issue when simulated streaming

* fix(mcp-agent): use chat-stream in phase tool-choose

* fix(mcp-agent): support reasoning model

* fix(llm): add pre-delete detection

* feat(mcp-agent): add default mcp-agent

* feat(mcp-agent): add default-mcp-tools
2026-03-03 16:08:22 +08:00
cwz_eikoh
6a7904788a Automated cherry pick of #24354: feat(mcp-server): add mcp-server config (#24385)
* feat(mcp-server): add mcp-server config

* fix(mcp-agent): add claude mcp-server-config
2026-03-03 16:06:15 +08:00
屈轩
30cb39af98 fix(esxi-agent): vendor update for rebuild root fail (#24380) 2026-03-03 00:17:06 +08:00
Zexi Li
acb62fc773 feat(monitor): support disable_notify_recovery for commonalert (#24375) 2026-03-02 16:12:49 +08:00
屈轩
9f4f88fc62 fix(region): check bind disk resource (#24372) 2026-03-02 12:02:53 +08:00
屈轩
bcc6800988 fix(region): snapshot size opslog (#24369) 2026-02-28 16:38:29 +08:00
屈轩
520ecda36b fix(region): avoid sync remove disk (#24362) 2026-02-27 15:06:05 +08:00
屈轩
ad4ee389e5 fix(ansibleserver): update telegraf (#24359) 2026-02-27 14:06:40 +08:00
Jian Qiu
0ff2ef0e19 fix: allow uncache deleted image (#24349)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-02-26 23:08:24 +08:00
wanyaoqi
d7b099efa0 fix(host): add guest max mem size options (#24342) 2026-02-26 20:26:41 +08:00
Zexi Li
0096082472 fix(monitor): convert SNodeAlert to SCommonAlert in FetchCustomizeColumns (#24344)
Pass cObjs of type *SCommonAlert to SCommonAlertManager.FetchCustomizeColumns
instead of *SNodeAlert so the parent correctly fetches common alert columns.
2026-02-25 19:31:51 +08:00
Jian Qiu
479e8e1b3a fix: keep climc network-create backward compatibility (#24340)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-02-25 09:03:12 +08:00
屈轩
df2a6d6170 fix(region): avoid account sync cost time abnormal (#24336) 2026-02-24 17:34:02 +08:00
Jian Qiu
b6e11061ef fix: instance snapshot virtual size (#24328)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-02-24 09:23:14 +08:00
Zexi Li
8ce635a36a fix(region): wrong args type on callback function of DiskCreateTask (#24330) 2026-02-13 17:05:22 +08:00
Zexi Li
fbd83ed9b0 fix(host): do not set cached image status to active for TGZ on host (#24324)
TGZ images are unpacked after fetch on host; leave status update to region
StorageCacheImageTask so cachedimage becomes active only in OnCacheSucc.
2026-02-13 10:04:49 +08:00
Jian Qiu
4bb85225b0 fix: ensure s3 client init for s3 storage driver (#24321)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-02-12 10:01:12 +08:00
Zexi Li
e1c2b122b1 feat(region,host): support post overlay uppper config (#24287) 2026-02-11 16:57:04 +08:00
屈轩
5a49aa6a3c fix(yunionconf): policy scope (#24314) 2026-02-11 11:23:51 +08:00
wanyaoqi
3e557a8eb9 fix(host): set dmesg parse failed log level to debug (#24309) 2026-02-11 00:59:35 +08:00
wanyaoqi
39b64b8edd fix(host-deployer): deploy single disk has no disk id (#24304) 2026-02-10 19:35:45 +08:00
wanyaoqi
1b36450a7c fix(host-deployer): online resize loop dev (#24301)
* fix(host-deployer): online resize loop dev

* fix(host-deployer): update host-deployer-base
2026-02-10 17:07:51 +08:00
Zexi Li
11ca895482 feat(monitor): support alert reason notification (#24290)
* feat(monitor): support alert reason notification

* fix(climc): commonalert list options
2026-02-10 09:06:24 +08:00
Jian Qiu
48b438d37b fix: guest syncstatus subtask for disk create task (#24292)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-02-10 09:03:19 +08:00
屈轩
99e582286c fix(notify): notify receiver (#24297) 2026-02-09 20:42:39 +08:00
Jian Qiu
42da4e038c fix: remove parent task info from task context (#24283)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-02-09 13:22:02 +08:00
wanyaoqi
33b60e4bc6 fix(host): add device_id only scsi-hd device (#24279) 2026-02-09 11:26:45 +08:00
wanyaoqi
7cc035a767 fix(host): deploy nics config defore do add nics (#24276) 2026-02-09 08:38:35 +08:00
Jian Qiu
f84b8f1a65 fix: unify lb charge type (#24272)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-02-08 18:43:14 +08:00
Jian Qiu
1659268809 feature: support postpaid traffic metering (#24269)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-02-08 12:57:45 +08:00
wanyaoqi
73f71776de feat(region,host,vpcagent): allow guest network dedicate secgroups (#24261) 2026-02-07 17:31:44 +08:00
wanyaoqi
cebeaae9d0 fix(region,host): rbd snapshot get actual size (#24240)
- add host down and auto migrate notification
2026-02-07 17:30:54 +08:00
屈轩
8b3b1a0ab6 fix(region): vendor update (#24265) 2026-02-07 13:52:06 +08:00
wanyaoqi
1479e5da3e fix(region,host): rename screen dump info structure (#24258) 2026-02-06 18:08:50 +08:00
cwz_eikoh
0b229dc00a fix(llm): add handler in apigateway for mcp-agent-chat (#24254) 2026-02-05 18:16:46 +08:00
屈轩
60da86e645 fix(region): snapshot policy operation (#24249) 2026-02-05 16:40:33 +08:00
wanyaoqi
987fca770c fix(glance): set s3 bucket name before s3 init check (#24237) 2026-02-04 23:07:33 +08:00
屈轩
ee161f21b0 fix(yunionconf): support tags (#24231) 2026-02-04 17:13:59 +08:00
屈轩
1d898e52a7 fix(region): public cloud sku create (#24226) 2026-02-04 14:56:55 +08:00
屈轩
873006650f fix(region): support cloudpods vm disk driver (#24221) 2026-02-04 14:28:09 +08:00
Zexi Li
24dda38605 fix(region,climc): persist netinterface vlan_id to hostnetwork (#24213)
- climc: add VlanId to host-add-netif, host-remove-netif, host-enable-netif,
  host-disable-netif
- region: set bn.VlanId from netif.VlanId when attaching to network
- mcclient: include Vlan_ID in baremetalnetworks list columns
2026-02-04 11:03:12 +08:00
屈轩
cc3a74b2f9 fix(host): support skip check kernel mod (#24218) 2026-02-04 10:30:02 +08:00
屈轩
522ca973f2 fix(region): avoid duplicate check when update account aksk (#24209) 2026-02-03 20:53:12 +08:00
Zexi Li
3e982a7438 Automated cherry pick of #24194: Fix(llm): some mistakes, use CmpId & InstantModelId insteadof SvrId & ModelId (#24205)
* fix(llm): some mistakes

* fix(llm): use CmpId instead of SvrId

* fix(llm): instant_model use id instead of modelId

---------

Co-authored-by: cwz <cwz_eikoh@163.com>
2026-02-03 16:46:07 +08:00
Zexi Li
05bb19c5a6 fix(monitor): comparator string (#24202) 2026-02-03 12:01:41 +08:00
屈轩
9489b6baa4 fix(region): init snapshot policy disk table (#24198) 2026-02-02 20:38:49 +08:00
wanyaoqi
e86609c969 fix(host): guestnetworksync do nothing on detach vfio nic (#24178) 2026-02-02 20:18:05 +08:00
Jian Qiu
8e1c23ec2e fix: allow guestnetwork ip4 addr field nullable (#24191)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-02-02 20:16:29 +08:00
Zexi Li
6b68d880c7 feat(monitor): add the registered model manger function (#24153) 2026-02-02 17:50:46 +08:00
屈轩
3f0c52be68 fix(climc): sku create support arch (#24186) 2026-02-02 14:17:08 +08:00
屈轩
9204340b38 fix(notify): support webhook sign (#24182) 2026-02-02 12:53:55 +08:00
wanyaoqi
c005337eed Automated cherry pick of #24126: feat(region,host): riscv64 cpu arch support (#24174)
* feat(region,host): riscv64 cpu arch support

* fix(region,host): compatible riscv64

* fix(host): add qemu v10.0.7 support
2026-02-01 20:27:12 +08:00
wanyaoqi
7d4245c677 fix(host): live migrate add timeout (#24162) 2026-02-01 20:24:00 +08:00
wanyaoqi
5341c97ccf fix(region): server add set network num queues (#24166) 2026-02-01 20:12:39 +08:00
wanyaoqi
a1bfcc1d9f fix(glance): set glance s3 bucket name default onecloud-images (#24171) 2026-02-01 20:10:57 +08:00
屈轩
e1730556e1 fix(region): defer ctx cancel (#24156) 2026-01-30 19:11:58 +08:00
cwz_eikoh
f2cc3f0c18 Automated cherry pick of #24149: Fix(llm): fix bugs & apikey encrypt & support history for mcp-agent-chat & delete modelname in llmSku (#24150)
* fix(llm): mcp-agent apiKey encrypt

* fix(llm): error-handle when instant-model import

* feature(llm): add get-available-network for llm

* feature(llm): support history for mcp-agent-chat

* fix(llm): llm create with net instead of networktype & networkid

* fix(llm): delete modelName in llmSku & fix some bugs
2026-01-29 10:50:11 +08:00
wanyaoqi
cd755ba02b fix(region): have agent add check is telegraf deployed (#24145) 2026-01-29 10:34:13 +08:00
屈轩
86ffcde03a fix(region): billing resource create time (#24140) 2026-01-28 19:59:48 +08:00
屈轩
fa08f8fd8f fix(glance): support prob iso image (#24133) 2026-01-28 15:28:56 +08:00
Zexi Li
7f54e038c0 fix(llm): add community-registry api (#24130) 2026-01-28 14:30:43 +08:00
Jian Qiu
d83585f158 fix: skip baremetal-agent riscv64 (#24123)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-01-24 20:33:16 +08:00
屈轩
855afe6dc5 fix(region): vendor update (#24118) 2026-01-23 17:03:32 +08:00
屈轩
784efcf211 fix(region): cloudpods container sync (#24113) 2026-01-21 15:33:40 +08:00
Jian Qiu
0cbdf68df3 fix: notify receiver update precedure recode (#24100)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-01-20 00:16:06 +08:00
wanyaoqi
28bbdd3061 fix(host): ensure scsi pci addr on add scsi disk (#24097) 2026-01-19 20:16:30 +08:00
cwz_eikoh
8c20fb7e3d Automated cherry pick of #23906: feature(llm): adapt frontend (#24095)
* feature(llm): add llm-list details, add autostart for llm-save-instant-model

* fix(llm): adjust some interfaces

* fix: name-dup problem when create llm

* fix: install instant-model by id rather than modelID

* fix(llm): add llm_id for mcp-agent

* feature(llm): move network from sku to instance

* feature(llm): add LLMType for llm-image

* feature(llm): add gpuMemoryRequired & ollama-registry yaml

* feature(llm): add url-get interface

* feature(llm): support mcp in mcp-agent-chat

* fix(llm): abstract ollama registry
2026-01-19 18:06:18 +08:00
屈轩
5904eaf042 fix(region): vendor update (#24092) 2026-01-19 14:21:46 +08:00
Jian Qiu
378177ad2f fix: user filter revisit (#24089)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-01-19 10:51:20 +08:00
Zexi Li
86a6a816af fix(telegraf-raid-plugin): working for victoria metrics (#24085) 2026-01-15 17:20:39 +08:00
Jian Qiu
a321c89e5f fix: detailed apigateway auth failure log (#24077)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-01-15 10:13:28 +08:00
Zexi Li
dd76886d51 fix(host): compatible with telegraf 1.36 and add ipmi_sensor conf (#24082)
* fix(host): compatible with telegraf 1.36 and add ipmi_sensor conf

* feat(monitor): add ipmi_sensor metric
2026-01-15 10:06:58 +08:00
屈轩
29809ce265 fix(region): vendor update (#24080) 2026-01-14 14:05:28 +08:00
屈轩
eb33cdbe4a fix(glance): avoid context warnning (#24074) 2026-01-14 10:54:52 +08:00
屈轩
cfde0396c3 fix(region): avoid panic when update user resource (#24071) 2026-01-13 18:20:57 +08:00
屈轩
a640fb3d60 fix(common): skip octet-stream warnning (#24068) 2026-01-13 18:20:35 +08:00
Zexi Li
f1f66fbed1 feat(monitor): delta reducer (#24063) 2026-01-12 17:27:32 +08:00
屈轩
35649ce641 fix(region): remove useless mod (#24061) 2026-01-12 14:12:19 +08:00
cwz_eikoh
0ff02020e7 Automated cherry pick of #24025: feature(llm): add mcp-agent (#24026)
* feature(llm): add mcp-agent

* feature(llm): support openai in llm_client

* feature(llm): chat-stream demo
2026-01-12 10:46:06 +08:00
屈轩
e1e91c0248 fix(region): host schedtag sync (#24056) 2026-01-11 18:33:44 +08:00
屈轩
f9c73f53c3 fix(region): allow batch resize disk (#24050) 2026-01-09 14:04:52 +08:00
Zexi Li
7bd4869998 fix(monitor): top query of monitor_resource_alert (#24052) 2026-01-09 12:10:17 +08:00
屈轩
97becd57ba fix(monitor): optimized common alert list (#24043) 2026-01-09 10:09:53 +08:00
wanyaoqi
399bfcb2e2 fix(host): add query id on detect qemu machine info (#24046) 2026-01-09 08:24:42 +08:00
屈轩
3eba59982c fix(monitor): optimized monitor resource list (#24039) 2026-01-08 15:23:28 +08:00
屈轩
5e50483cbc fix(region): support order by snapshot (#24036) 2026-01-08 11:14:00 +08:00
Zexi Li
317497d6c2 fix(monitor): resource id deduplication of alert record (#24032) 2026-01-07 11:15:51 +08:00
屈轩
e7dee4e9a0 fix(monitor): show alert count (#24028) 2026-01-07 10:03:13 +08:00
Zexi Li
2a82c99942 feat(host): mount post overlay layers by shortest path order (#24012)
* fix(host): mount and umount order for post overlay

- support host_lower_map for post overlay image

* feat(host): tar dirs of pod with include patterns
2026-01-06 20:02:58 +08:00
Zexi Li
35b17d1d7c fix(monitor): fill resource ids of the cloud account (#24029) 2026-01-06 19:44:18 +08:00
wanyaoqi
518f81ba69 fix(region): guest batch create isolated devices add host lock (#24013) 2026-01-06 18:10:49 +08:00
Jian Qiu
8fb0236de5 fix: endpoint mode slave (#24023)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2026-01-06 18:05:27 +08:00
屈轩
c1cd91e01c fix(region): show pretty error (#24021) 2026-01-06 10:29:39 +08:00
屈轩
27500ca14e fix(cloudmon): optimized account balance metric collect (#24011) 2025-12-30 19:56:59 +08:00
屈轩
ec0d44e1bc fix(region): add billing resource check (#24008) 2025-12-30 18:47:27 +08:00
cwz_eikoh
0137096ba8 feature(mcp-server): add InitAuth & userCred (#24006) 2025-12-30 10:36:53 +08:00
wanyaoqi
6c66130f16 fix(region,host,host-deployer): add win11 tpm support (#23951) 2025-12-29 11:18:46 +08:00
wanyaoqi
cb155ebcbb fix(scheduler): correct mem_free = (mem_total - mem_reserved) * mem_cmtbound (#23983) 2025-12-29 11:17:38 +08:00
wanyaoqi
89c836518b fix(climc): host set memory commit bound incorrect params (#23974) 2025-12-29 11:02:19 +08:00
wanyaoqi
62ab0616ff fix(glance): image disk_format use String2ImageFormat (#23990) 2025-12-29 11:01:01 +08:00
Jian Qiu
572d83f146 fix: change OutOfResource http status code to 507 (#23987)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-12-29 10:59:10 +08:00
屈轩
e2bd696ac6 fix(monitor): alert filter by owner (#24001) 2025-12-29 10:15:45 +08:00
屈轩
faeb5685be fix(region): show host cpu and mem usage (#23998) 2025-12-25 21:58:00 +08:00
屈轩
49088da817 fix(region): ksyun create vm params (#23996) 2025-12-25 10:32:40 +08:00
屈轩
dd5dc038cd fix(region): vendor update (#23994) 2025-12-24 19:45:10 +08:00
屈轩
b8e70e1142 fix(region): update private cloud host cpu and mem usage by cloudmon (#23984) 2025-12-24 19:21:21 +08:00
Zexi Li
29dc02f484 fix(host): make disk mount point shared for unshared post overlay (#23980) 2025-12-24 15:33:31 +08:00
屈轩
4dd9e26225 fix(region): show guest nic index (#23958) 2025-12-24 11:33:36 +08:00
Zexi Li
17882cca3f fix(host): quote include paths when before executing tar (#23969) 2025-12-23 18:11:57 +08:00
Jian Qiu
d0383ff1ab feature: assume user login support (#23963)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-12-23 13:54:23 +08:00
Zexi Li
3293def16a feat(host): add debug info when restoring backup to disk (#23962) 2025-12-23 12:02:49 +08:00
wanyaoqi
e20f46f7ed Automated cherry pick of #23930: Automated cherry pick of #23725: feat(baremetal-agent): Linux PCIE disk support mdadm soft raid (#23931)
* feat(baremetal-agent): Linux PCIE disk support mdadm soft raid

* fix(baremeta-agent): soft raid support intel imsm

* fix: update baremetal-agent base
2025-12-22 13:29:25 +08:00
wanyaoqi
a8e8641c75 fix(scheduler,host): sort numa node by numa distance check memsize (#23922) 2025-12-22 11:43:51 +08:00
wanyaoqi
2085d9dfa5 fix(region): guest usage by arch (#23955) 2025-12-22 11:42:48 +08:00
Jian Qiu
2c45df0895 fix: host compat with ovs in container (#23945)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-12-22 11:41:01 +08:00
Jian Qiu
5a15d84685 fix: host flush addrs instead of reset interface (#23948)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-12-18 01:14:39 +08:00
屈轩
3e49aac8f6 fix(region): cloudpods pod (#23946) 2025-12-17 16:29:00 +08:00
cwz_eikoh
09b5ecbce0 Automated cherry pick of #23928: feature(llm): add llm-instant-model-import (#23929)
* feature(llm): add llm-instant-model-import

* fix(llm): can't delete llm while deploy faile

* feature(llm): add instant-model-import to instant-model-create
2025-12-17 13:34:07 +08:00
屈轩
8554c93b0f fix(region): disable sync schedtags (#23942) 2025-12-16 20:40:55 +08:00
屈轩
6b6147777c fix(region): disable cloudpods auto create project (#23937) 2025-12-15 15:51:38 +08:00
屈轩
ddcd72716c fix(region): add provider info for sync log (#23932) 2025-12-15 13:47:19 +08:00
Zexi Li
67d743296d fix(monitor): meter alert panic (#23920) 2025-12-12 10:20:13 +08:00
屈轩
4fbe43192d fix(region): aliyun system disk size (#23926) 2025-12-12 10:19:34 +08:00
Jian Qiu
16f15ac0fc fix: backup storage edit external url (#23916)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-12-09 19:43:54 +08:00
Jian Qiu
eca000b52e fix: splitable not function due to empty datefield (#23908)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-12-09 13:34:26 +08:00
屈轩
3a2ab9e73d fix(region): vendor update (#23904) 2025-12-07 16:00:55 +08:00
屈轩
7a5a2c549a fix(region): baidu storage info (#23902) 2025-12-05 16:20:46 +08:00
cwz_eikoh
9ac509e55b Automated cherry pick of #23898: Feature/pre quick model (#23899)
* feat: add preinstall for quick-models

* fix: drop error when duplicate blobs
2025-12-05 10:33:55 +08:00
Zexi Li
4ca1fbfda5 fix(host): ensure a single file dir when mounting (#23896) 2025-12-04 13:54:08 +08:00
cwz_eikoh
80287d6b4d Automated cherry pick of #23769: [Feature] llm model 使用 post_overlay 功能实现秒装挂载模型 (#23888)
* feat(llm): add probed-package

* feat(llm): add llm-save-instant-app

* feat(llm): add some llm-instant-app options

* fix(llm): change app to model

* fix(llm): rename origin model to sku

* feat(llm): add llm-quick-models

* fix(llm): saved paths for instant model

* fix(llm): fix quick-install-model

---------

Co-authored-by: Zexi Li <zexi.li@icloud.com>
2025-12-03 16:27:19 +08:00
Zexi Li
7015962121 fix(monitor): filter baremetal host for no data query (#23893) 2025-12-03 16:24:35 +08:00
Zexi Li
1a87bb18c9 fix(apigateway): load llm (#23886) 2025-12-03 16:21:04 +08:00
屈轩
af85cca1d6 fix(region): optimized backend sync (#23890) 2025-12-03 15:14:17 +08:00
屈轩
8d9740f149 fix(region): aliyun vnc addr (#23884) 2025-12-03 14:04:16 +08:00
Zexi Li
2dd1d6fc26 fix(host): remove empty files used bind mount (#23881) 2025-12-02 19:34:00 +08:00
wanyaoqi
ce338f180a fix(host,host-deployer): host-deployer add password quality check (#23875) 2025-12-02 17:02:34 +08:00
Zexi Li
6869eca040 feat(monitor): 支持指定过去时间段返回报警资源最多的top5监控策略 (#23878)
* feat(monitor): 支持指定过去时间段返回报警资源最多的top5监控策略

* feat(monitor): 支持指定过去时间段返回报警数量最多的top5资源

* feat(monitor): 支持指定过去时间段某监控策略下各监控指标报警资源最多的top5资源

* feat(monitor): 支持获取过去时间段各项目下报警资源数量
2025-12-02 15:47:54 +08:00
屈轩
4666b00bda fix: update host-deploy base image (#23871) 2025-12-01 11:41:13 +08:00
屈轩
154673e6a3 fix(region): vendor update (#23868) 2025-11-30 17:22:22 +08:00
Zexi Li
0cd633046f fix(monitor): filter alertrecords by alert_name and res_name (#23864) 2025-11-28 18:58:24 +08:00
屈轩
f0980d7817 fix(region): vendor update (#23859) 2025-11-27 20:35:44 +08:00
wanyaoqi
2b0a7ac265 Automated cherry pick of #23846: Fix/host misc fix (#23847)
* fix(host): host register return wrong error value

* fix(host): host handlers use gotypes check ret value is nil
2025-11-27 19:19:31 +08:00
Zexi Li
79166f9aaa fix(monitor): alert shield is not working (#23861) 2025-11-27 19:18:37 +08:00
屈轩
0ec78aaa8a fix(keystone): change token AuditIds width (#23851) 2025-11-27 17:19:37 +08:00
Zexi Li
8622137834 fix(monitor): threshold_range message (#23855) 2025-11-27 16:47:24 +08:00
Zexi Li
4a7b6af08a feat(monitor): support threashold range (#23849) 2025-11-27 14:59:55 +08:00
Zexi Li
41ba24f4b5 feat(climc): support --ouput option for pprof command (#23840) 2025-11-27 14:18:35 +08:00
屈轩
11dc0d46a2 fix(region): vendor update (#23844) 2025-11-26 16:57:01 +08:00
Jian Qiu
fbdf305ff5 fix: generic guest delete task (#23837)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-11-26 01:01:11 +08:00
wanyaoqi
2d30cb862f fix(region,host): perform screendump no save to s3 (#23827) 2025-11-26 01:00:38 +08:00
wanyaoqi
c712a848a5 fix(region): disk take snapshot check backing snapshot is merged (#23833) 2025-11-26 00:59:14 +08:00
屈轩
01c97c0df6 fix(region): support vmware resource pool (#23829) 2025-11-25 19:07:32 +08:00
Zexi Li
c3f9b88faa feat(monitor): get records of monitor_resource_alert (#23822) 2025-11-24 21:34:20 +08:00
屈轩
a49e7437bd fix(region): vendor update (#23820) 2025-11-24 14:20:51 +08:00
Jian Qiu
491cde2257 fix: validate policy role delete condition (#23813)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-11-21 12:04:20 +08:00
Zexi Li
b28bdf43e4 fix(monitor): alerting level (#23800) 2025-11-21 10:26:41 +08:00
Jian Qiu
4afbf46da1 fix: region-dns not support dameng dialect (#23805)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-11-21 09:55:20 +08:00
屈轩
6a0c361ea3 fix(region): snapshot policy resource purge (#23807) 2025-11-20 23:42:22 +08:00
Zexi Li
80b5a7c04a fix(monitor): title of notification by language context (#23788) 2025-11-20 20:11:34 +08:00
屈轩
729a523260 fix(monitor): avoid panic (#23795) 2025-11-20 18:43:12 +08:00
屈轩
3e7c73677e fix(host): format sLsusbTree field content json tag (#23791)
Co-authored-by: 云原生驿站 <33771248+CloudCourierStation@users.noreply.github.com>
2025-11-20 18:26:16 +08:00
Zexi Li
f12c22e7b6 fix(monitor): check if LastSendNotification is zero (#23781) 2025-11-20 18:03:45 +08:00
屈轩
2fee1b6aea fix(region): migrate snapshot policy resource (#23789) 2025-11-20 17:38:15 +08:00
屈轩
32d4820a63 fix(cloudmon): account balance metric with tenant_id (#23785) 2025-11-20 14:22:28 +08:00
屈轩
15c7a825bf fix(cloudmon): avoid undetected new resources (#23778) 2025-11-20 10:48:36 +08:00
Zexi Li
985995c684 fix(baremetal-agent): msdos typo in grub configuration (#23775) 2025-11-20 10:39:09 +08:00
屈轩
52f2d801c1 fix: support build rpm/deb of riscv64 (#23771)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-11-19 17:39:54 +08:00
屈轩
a0f9484770 fix: support risc-v (#23770) 2025-11-19 17:20:26 +08:00
Jian Qiu
19b0997ab6 fix: diskbackup fail to syncstatus on offline backend (#23765)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-11-19 10:48:51 +08:00
Jian Qiu
6274e21053 fix: export/import disk backup (#23760)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-11-18 23:49:39 +08:00
Zexi Li
3ba6c1b3ff fix(host): use directory of single file as post_overlay lower (#23756) 2025-11-18 16:34:48 +08:00
Zexi Li
9099f682fb feat(monitor): set alert_channel to metata (#23754) 2025-11-18 12:52:37 +08:00
屈轩
a0d28c214f fix(region): esxi vm folder (#23752) 2025-11-17 18:14:02 +08:00
屈轩
fccf389a53 fix(region): server sku create status (#23749) 2025-11-17 17:01:08 +08:00
wanyaoqi
8a68f5d7d4 feat(region,host): host dmesg collect (#23746) 2025-11-17 15:44:42 +08:00
Jian Qiu
51fddda1bd fix: filter schedtags by zones (#23743)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-11-15 18:30:33 +08:00
Jian Qiu
65e0f4414e feature: user expired_at attribute support (#23727)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-11-14 10:53:39 +08:00
Zexi Li
c33dc74019 feat(cloudcommon): add ExtraHook steps to joint model (#23722) 2025-11-14 10:50:39 +08:00
wanyaoqi
705fe7a5d9 fix(host): thrown errors on disk fromatfs (#23729) 2025-11-14 10:40:49 +08:00
Zexi Li
91617dc81b fix(host): SHostPingTask was stuck by calling docker command (#23732) 2025-11-13 20:18:55 +08:00
屈轩
f668f496dc fix(region): scope resource (#23736) 2025-11-13 14:43:45 +08:00
屈轩
69831485a3 feat: Cloudpods basic service image RISC-V support (#23724)
This patch enables cloudpos basic service image to be built on RISC-V
platforms and support build script to work on RISC-V platforms.

Signed-off-by: Jinyu Zhao <1813479822@qq.com>
Co-authored-by: Jinyu Zhao <1813479822@qq.com>
2025-11-12 11:44:05 +08:00
cwz_eikoh
8d4595be87 fix(region): add kvm_delete_task (#23698) 2025-11-11 16:32:33 +08:00
wanyaoqi
fcb72e304b fix(region,scheduler): check is BIOS boot request on uefi predicate (#23718) 2025-11-11 13:45:18 +08:00
Zexi Li
30b7deb9f5 fix(baremetal): power status of server is not synced (#23687) 2025-11-10 09:56:29 +08:00
Jian Qiu
a191da0a77 fix: log change bandwidth event (#23713)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-11-10 09:48:40 +08:00
Jian Qiu
dfbd89c9db fix: vm nic charge type support (#23703)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-11-07 10:53:04 +08:00
cwz_eikoh
f53caeb6d1 fix(region): add finish for DependencyTopoGraph (#23710) 2025-11-07 10:20:31 +08:00
cwz_eikoh
bf4f1755c8 fix(llm): don't rely on polling (#23709) 2025-11-07 10:19:37 +08:00
Zexi Li
9bb6e3eb1b fix(host): clear previous usage metrics when any container stopped of pod (#23704) 2025-11-06 20:55:43 +08:00
屈轩
33938c6c01 fix(torrent): vendor update for support risc-v (#23701) 2025-11-06 20:21:14 +08:00
屈轩
4f1bb2a871 fix(region): allow delete server sku (#23694) 2025-11-05 18:20:20 +08:00
屈轩
7abcd04f16 fix(region): add device for disk (#23691) 2025-11-05 16:23:29 +08:00
屈轩
2cae726280 fix(scheduler): sku predicate with empty zone id (#23685) 2025-11-04 20:56:34 +08:00
Zexi Li
16aa081789 fix(baremetal-agent): chose root disk by pci path (#23681) 2025-11-04 20:09:39 +08:00
Jian Qiu
45de538d15 fix: rename check when change project (#23677)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-11-04 16:08:09 +08:00
cwz_eikoh
a05b793b81 feat(region): pod containers start in dependency order (#23669) 2025-11-04 10:38:33 +08:00
屈轩
7df775f07c fix(region): optimized aws server sku sync (#23674) 2025-11-03 22:32:17 +08:00
屈轩
ec3c9f3a20 fix(region): metadata filter by value (#23671) 2025-11-03 19:24:33 +08:00
Zexi Li
e2e79cd7cc fix(host): upload container status when not created (#23666) 2025-11-03 15:53:44 +08:00
屈轩
68675541ff fix(region): optimzed server sku sync (#23663) 2025-11-03 15:13:45 +08:00
屈轩
9ee0e83747 fix(region): disk filter by server (#23659) 2025-11-01 13:32:27 +08:00
屈轩
4068843773 fix(region): optimized filter sku by zone (#23656) 2025-11-01 13:04:49 +08:00
屈轩
c4b719628b fix(region): vendor update (#23653) 2025-11-01 13:03:59 +08:00
cwz_eikoh
66afa2f141 Automated cherry pick of #23620: feat(llm): add network id and network type for llm-model (#23621)
* feat(llm): add network id and network type for llm-model

* fix(llm):portmapping of model network only works when network mode is hostlocal
2025-10-31 10:21:51 +08:00
Zexi Li
51bdf0c655 Automated cherry pick of #23642: fix(scheduler): enable profiling (#23647)
* fix(scheduler): enable profiling

* feat(scheduler): cache NetworkAdditionalWire
2025-10-31 10:19:50 +08:00
屈轩
5fc5c5b330 fix(region): sku cpu mem sync (#23649) 2025-10-30 22:33:39 +08:00
屈轩
1c61483bc1 fix(region): filter disks by server list (#23644) 2025-10-30 17:24:41 +08:00
屈轩
79c45568c7 fix(region): vendor update (#23639) 2025-10-30 10:06:23 +08:00
Zexi Li
002b37f6a1 fix(host): move the hostInstance.Init() step after InitAuth (#23624) 2025-10-29 14:00:33 +08:00
Jian Qiu
6a18b70168 fix: task remote notify (#23627)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-10-29 12:17:27 +08:00
屈轩
bbf0991bb3 fix(cmd): show mcp server update cmd (#23629) 2025-10-28 18:35:01 +08:00
屈轩
1052eb4451 fix(mcp): add dockerfile for mcp server (#23619) 2025-10-28 15:23:20 +08:00
屈轩
07ce88c828 fix(mcp): cherry pick 4.0 (#23617) 2025-10-28 15:22:48 +08:00
屈轩
29585a8af6 fix(region): set ksyun tag (#23611) 2025-10-24 22:54:09 +08:00
Zexi Li
06258859d8 chore(ci): turn off goimports-check rule (#23606) 2025-10-24 15:48:44 +08:00
Zexi Li
2bbd1f792c Automated cherry pick of #23282: [OSPP]feature: Auto deploy llm and dify (#23601)
* feat(llm): add llm-create

* fix(llm): fix llm-create, add llm-list & llm-show

* fix(llm): format file names

* fear(llm): add exec stream

* fear(llm): init llm model cache

* fix(llm): move llm model cache to LocalImageCache

* feat(llm): auto clean model cache

* fix(llm): auto clean tmp model cache

* feat(dify): init dify-create

* fix(dify): change dify default registry

* feat: support create model with gguf file

* feat(llm): support more modelfile option for gguf file

* feat(dify): init user customize dify parameters

* feat: update llm as a service in climc

* fix: delete llm from region service

* feat: init llm service (with error)

* fix: resolve errors (task cant callback yet)

* feat: add PerformRequestHostActionByOtherService for container

* fix: make llm service usable

* feat: delete llm and dify after guest deleted

* feat(llm): add llm-image

* feat(llm): add llm-model

* feat: mv old llm to ollama

* feat(llm): init llm-batch-create(can not run)

* fix(llm): make llm-create usable

* fix(llm): add pull-model step

* feat(llm): add list and delete

* fix(llm): ollama pull official model don't rely on host & region's code any more

* feat(llm): add dify-model

* fix: remove llm's code in host & compute

* fix: remove remain code in compute

* feat(llm): Abstract out and reuse the llm_model logic

* feat(llm): abstract llm_base from llm

* fix(llm): make dify usable

* feat(llm): add sync_dify_images.sh

* fix(llm): format import

* feat(llm): support start & stop for llm and dify

* feat(llm): add model-update

* fix(llm): gendocgo

---------

Co-authored-by: cwz <cwz_eikoh@163.com>
2025-10-24 13:29:40 +08:00
Jian Qiu
56b41893ec fix: rpm/deb support postinst/preinst/prerm/postrm hooks (#23596)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-10-23 01:03:18 +08:00
Jian Qiu
cb0729f672 fix: suport bulding multi-arch rpm deb (#23570)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-10-22 23:53:16 +08:00
屈轩
e6ec61cab1 fix(keystone): fetch domain user count (#23591) 2025-10-22 16:25:54 +08:00
wanyaoqi
35e34f019a fix(region,host,scheduler): add check kvm cpu max on cpu predicate (#23538) 2025-10-22 15:07:22 +08:00
Zexi Li
b352d0cc92 feat(region,host): support nvidia GPU CDI configuration (#23566) 2025-10-22 15:04:08 +08:00
cwz_eikoh
56e938ee2e feat(container): container-restart (#23588) 2025-10-22 14:59:49 +08:00
屈轩
a9649db617 fix(region): support ocean base (#23587) 2025-10-22 14:43:32 +08:00
屈轩
b1ef423c2a fix(region): disable cloudprovider when sync lost (#23582) 2025-10-22 11:30:23 +08:00
屈轩
8da753833d fix(region): vendor update (#23579) 2025-10-22 11:12:17 +08:00
Zexi Li
16b3d220f4 feat(region): allow containers to be created with auto_start param (#23572) 2025-10-21 17:20:52 +08:00
屈轩
dc5884b361 fix(region): adjust the ip_addr character length (#23563) 2025-10-21 10:45:11 +08:00
Jian Qiu
77c471322a fix: container memory.high ratio support (#23558)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-10-21 09:32:57 +08:00
屈轩
584b3291cd fix(glance): add notify for image create (#23553) 2025-10-16 14:30:48 +08:00
wanyaoqi
f5a6465629 fix(webconsole): baremteasl ipmi sol instance_name hide password (#23533) 2025-10-16 00:02:42 +08:00
wanyaoqi
de05e8cc4a fix(host): host probe isoalted device return jsonarray (#23544) 2025-10-16 00:01:36 +08:00
屈轩
a839607802 fix(region): valid essd pl0 disk resize (#23546) 2025-10-15 17:25:06 +08:00
屈轩
6251e28e52 fix(region): vendor update (#23540) 2025-10-15 10:57:52 +08:00
屈轩
3591e9a15f fix(region): support change storage type (#23530) 2025-10-14 16:59:21 +08:00
屈轩
84e8b83aab fix(region): healt status (#23525) 2025-10-13 18:51:04 +08:00
屈轩
cd3190d80f fix(keystone): distribute permissions when the organization changes (#23502) 2025-10-13 18:49:45 +08:00
屈轩
b60346b97f fix(region): private zone create status (#23521) 2025-10-13 18:05:27 +08:00
wanyaoqi
d3c64b8054 fix(host): ensure host wire marshal nil value (#23507) 2025-10-12 11:04:35 +08:00
屈轩
914c1a1971 fix(region): server sku create with region id (#23509) 2025-10-11 16:54:47 +08:00
wanyaoqi
13ce2252ce fix(region,glance,host-deployer): guest image support bios boot mode detect (#23375) 2025-10-11 10:20:54 +08:00
Zexi Li
3bdfb00850 fix(baremetal): ensure the execution of the BaremetalServerDestroyTask (#23497) 2025-10-09 17:07:35 +08:00
Jian Qiu
bc7cc1ad07 fix: ignore e2fsck errors if retcode < 4 (#23489)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-10-09 16:31:40 +08:00
wanyaoqi
dd7602e628 fix(host): disk resize error input params (#23493) 2025-10-09 13:27:44 +08:00
Jian Qiu
7fe4ac72fe fix: network manager keyfile static routes (#23480)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-10-08 13:18:34 +08:00
Jian Qiu
55e586121d fix: support network manager connection profiles (#23468)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-10-03 09:25:14 +08:00
Jian Qiu
144ee48cec fix: default cloud region init error (#23475)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-10-03 06:34:24 +08:00
屈轩
b3a3d170e2 fix(region): vendor update (#23459) 2025-09-30 15:09:43 +08:00
屈轩
ebdcabe330 fix(region): host order by virt cpu (#23457) 2025-09-30 13:19:16 +08:00
Jian Qiu
e504d0d4e3 fix: hostman master nic may be nil (#23450)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-30 11:18:23 +08:00
Jian Qiu
00ee68c716 fix: s3 common options (#23444)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-29 19:22:25 +08:00
Jian Qiu
c6bf60722b fix: disable password history unique check by default (#23438)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-29 15:47:40 +08:00
wanyaoqi
8e6e30d57f fix(region,baremetal): ipv6 baremetal register support (#23422) 2025-09-29 15:22:22 +08:00
Jian Qiu
1f31c00819 fix: backup task worker count in host configmap (#23427)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-29 15:20:38 +08:00
屈轩
a704ab1cea fix(cloudevent): options changed with etcd (#23433) 2025-09-29 12:24:15 +08:00
屈轩
b90abee236 fix(region): vendor update (#23416) 2025-09-28 18:04:03 +08:00
wanyaoqi
ee471da787 fix(host-deployer): update host-deployer-base to 1.4.11 (#23413) 2025-09-28 17:26:03 +08:00
Zexi Li
4e1d8f2a98 fix(region,host): sync server status by upload guest status api (#23408) 2025-09-28 17:24:04 +08:00
屈轩
65492d196c fix(region): vendor update (#23405) 2025-09-28 14:58:55 +08:00
wanyaoqi
af73e7e93a Automated cherry pick of #23374: fix(region,host): guest add vnc screen dump support (#23377)
* fix(host): update nic confs inside vm on qga delete nics

Signed-off-by: wanyaoqi <wanyaoqi@yunion.cn>

* fix(region,host): guest add vnc screen dump support

---------

Signed-off-by: wanyaoqi <wanyaoqi@yunion.cn>
2025-09-27 12:06:12 +08:00
wanyaoqi
59089c6792 Automated cherry pick of #23386: fix(host-deployer): allow growpart on primary partition (#23394)
* fix(host): init cgroup ignore disable cgroup option

* fix(host-deployer): allow growpart on primary partition
2025-09-27 12:02:06 +08:00
Zexi Li
9a19621da0 fix(host): unmount post overlay dir without accquire cached image (#23402) 2025-09-27 07:43:35 +08:00
屈轩
85ad508d83 fix(region): vendor update (#23398) 2025-09-26 18:05:24 +08:00
屈轩
e67f8392a7 fix(region): support cnware (#23389) 2025-09-26 14:45:37 +08:00
屈轩
c9ece3e7de fix(region): vendor update (#23383) 2025-09-26 13:53:39 +08:00
wanyaoqi
b6329b5c23 fix(host-deployer): loop dev resize diskfs umounted and f2fs support (#23358) 2025-09-24 18:52:48 +08:00
Zexi Li
b7a3ed9e27 fix(host): clear the rootfs of container before starting (#23361) 2025-09-24 18:52:06 +08:00
Jian Qiu
d591b7991b fix: network filter by ip error for dameng (#23364)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-24 18:45:07 +08:00
Jian Qiu
e05112b3f6 fix: auto cleanup obsolete password records (#23371)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-24 18:35:38 +08:00
屈轩
bef839cc7b fix(region): vendor update (#23368) 2025-09-24 17:22:23 +08:00
Zexi Li
6c7bb1a1b1 feat(region,host): clean no persistent rootfs (#23354) 2025-09-22 18:10:12 +08:00
屈轩
efe0d135b2 fix(region): add expired release notify hour options (#23351) 2025-09-22 10:58:13 +08:00
Jian Qiu
185332fa28 fix: host backup task worker limit (#23347)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-22 09:48:20 +08:00
Jian Qiu
64fa9f1675 fix: linux sshd_config support (#23342)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-20 00:39:27 +08:00
Zexi Li
60a57b1e1b fix(scheduler): watch serversku (#23328) 2025-09-19 23:49:32 +08:00
屈轩
8ac435af8e fix(region): rds backup sync (#23306) 2025-09-19 23:47:32 +08:00
wanyaoqi
c436fde002 fix(host,host-deployer): support lvm disk resize (#23334)
- add resize lvm disk support
- support qga online resize disk partitions and filesystems
2025-09-19 23:46:03 +08:00
Jian Qiu
f4bcb7ffdf fix: check os_arch when server rebuilding root (#23338)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-19 23:44:31 +08:00
屈轩
38d1d0f766 fix(region): disk reset webhook (#23326) 2025-09-18 15:08:21 +08:00
屈轩
f8001de546 fix(notify): optimized workwx access token expired time (#23323) 2025-09-18 14:55:18 +08:00
Zexi Li
bd731ca958 fix(monitor): diffTagKeys are empty when only one series in results (#23311) 2025-09-18 07:49:17 +08:00
屈轩
6c4a1a3628 fix: upgrade goimports (#23321) 2025-09-17 22:08:03 +08:00
屈轩
5387fc03f8 fix(region): remove debug sql (#23318) 2025-09-17 16:54:47 +08:00
屈轩
37c3db52b9 fix(cloudmon): alert metric with tenant id (#23315) 2025-09-17 16:40:21 +08:00
屈轩
976f0f0bf4 fix(climc): sku create params (#23301) 2025-09-15 15:33:40 +08:00
wanyaoqi
f446f86e9f fix(region): virtual isolated device balance on guest start (#23049) 2025-09-15 11:58:23 +08:00
屈轩
4428791397 fix(region): support gcp shared vpc and image (#23296) 2025-09-12 23:03:31 +08:00
Zexi Li
314fb8f08e feat(host): hide host files mounted to container (#23293) 2025-09-12 18:55:06 +08:00
屈轩
331231ce1a fix(monitor): history alert report (#23280) 2025-09-12 15:27:20 +08:00
Zexi Li
a8e4ecfa5a fix(host,region): container rootfs use sub directory (#23290) 2025-09-12 15:08:07 +08:00
Zexi Li
51bec5644e fix(monitor): fetch total alert resources from monitor_resource_alert (#23275) 2025-09-10 19:17:29 +08:00
屈轩
092a0c2239 fix(region): update cloudprovider external id (#23272) 2025-09-10 18:59:47 +08:00
Jian Qiu
82bfb4cea1 fix: ipv6 ra should be sent periodically (#23259)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-10 18:59:09 +08:00
Jian Qiu
e35ca851a7 fix: image self check status (#23250)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-10 18:57:27 +08:00
屈轩
aba6378177 fix(region): support hyperdisk for gcp (#23269) 2025-09-10 15:34:34 +08:00
Zexi Li
abda8b0400 fix(climc): monitor-alertrecords-total-alert command (#23266) 2025-09-10 14:24:52 +08:00
屈轩
606112ea44 fix(region): sync cloudpods ipmi ip addr (#23264) 2025-09-09 20:52:56 +08:00
屈轩
aca997796d fix(region): cloudpods ipmi info sync (#23262) 2025-09-09 19:27:52 +08:00
屈轩
df7d2d3d80 fix(region): sync cloudpods baremetal isolated device (#23257) 2025-09-09 18:40:38 +08:00
屈轩
42fb3e1327 fix(region): sync cloudpods host storage info (#23255) 2025-09-09 16:00:02 +08:00
屈轩
031e54b81e fix(region): retention server by tag (#23248) 2025-09-08 17:59:59 +08:00
屈轩
f990fe0ba3 fix(region): support retention server by tags (#23246) 2025-09-08 16:27:31 +08:00
屈轩
28dff24e44 fix(region): support retention server by tag (#23244) 2025-09-08 15:45:34 +08:00
屈轩
932e12ae87 fix: upgrade go 1.24 (#23242) 2025-09-05 18:26:42 +08:00
屈轩
7e60f49d4a fix(region): snapshot policy unbind disks (#23239) 2025-09-04 16:57:58 +08:00
屈轩
cbe77a29e2 fix(region): sync prepaid disk expired time (#23236) 2025-09-04 16:47:09 +08:00
屈轩
9ea05affbf fix(region): add disk change billing type log (#23232) 2025-09-03 20:16:38 +08:00
屈轩
56825a3cd9 fix(region): add kafka and mongodb capability (#23229) 2025-09-03 19:44:34 +08:00
屈轩
0e04ce4371 fix(region): distinct cloudprovider fields (#23227) 2025-09-03 15:03:18 +08:00
wanyaoqi
fe36e13dc7 fix(host): live migrate compat ipv6 (#23214) 2025-09-03 05:49:54 +08:00
Jian Qiu
fdf9195e8c fix: fail to delete cas idp due to readonly domain (#23217)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-03 05:48:43 +08:00
Jian Qiu
f72104ce60 fix: image s3 direct download option (#23220)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-03 05:47:32 +08:00
Jian Qiu
73ddbd4048 fix: network filter by ipv6 address (#23223)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-09-03 05:46:44 +08:00
屈轩
2f474ff911 fix(region): support more scheme keypair (#23196) 2025-09-02 14:45:03 +08:00
Zexi Li
3edd8dd65b feat(host): add SdnFetchDataFromComputeService option (#23207) 2025-09-01 23:15:40 +08:00
屈轩
cbf4310cab fix(region): avoid change to the same config sku not effective (#23203) 2025-09-01 11:43:01 +08:00
Jian Qiu
f2d77ad487 fix: too many recursive locks when batch create (#23198)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-29 23:08:07 +08:00
wanyaoqi
f491efc498 fix(host): update nic desc on nic changed (#23180) 2025-08-28 10:07:18 +08:00
wanyaoqi
bd719d99c0 feat(region,hostdeployer): add f2fs feature support (#23183) 2025-08-28 10:05:51 +08:00
屈轩
9f037c1baf fix(region): add cloud_env filter for cachedimages (#23191) 2025-08-27 18:34:36 +08:00
Jian Qiu
9b6a13037c fix: guest ipv6 vip (#23187)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-27 18:07:44 +08:00
Jian Qiu
3b6949fe78 fix: dhcpv6 should nack confirm if addr changed (#23169)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-26 15:35:31 +08:00
wanyaoqi
023309c1cf fix(region,host): ipv6 change addr (#23171) 2025-08-26 15:34:27 +08:00
屈轩
7bfdae3c45 fix(keystone): show ldap url (#23174) 2025-08-26 14:28:39 +08:00
屈轩
6ea9447a92 fix(keystone): upgrade ldap version (#23166) 2025-08-26 13:28:40 +08:00
Jian Qiu
cef3b9effb fix: deploy gai.conf if both v4 and v6 present (#23161)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-25 18:19:27 +08:00
Zexi Li
e30d669d19 feat(host): support single file to use post overlay (#23159) 2025-08-25 11:48:01 +08:00
屈轩
38872edae2 fix(region): optimized cached image list (#23154) 2025-08-22 15:43:23 +08:00
wanyaoqi
cff38d74ec feat(region,host,host-deployer): f2fs filesystem support (#23118) 2025-08-22 09:06:31 +08:00
wanyaoqi
f1f01ea823 fix(host): run ifdown script on guest delete (#23102) 2025-08-22 09:03:54 +08:00
Zexi Li
66587b4e52 fix(region): update the image status to save_fail when OnImageSavedFailed (#23140) 2025-08-21 18:12:24 +08:00
wanyaoqi
206a4b5b19 fix(scheduler): add session usage timeout options (#23143) 2025-08-21 18:10:51 +08:00
屈轩
90f479bafc fix(region): dns zone registrar charset (#23150) 2025-08-21 11:34:42 +08:00
屈轩
1df9c11501 fix(region): add change_config status for aigateway (#23138) 2025-08-20 17:05:34 +08:00
屈轩
79561cd8ef fix(region): avoid update guest disable_delete attribute error when host id is empty (#23135) 2025-08-20 16:21:24 +08:00
Zexi Li
435344ee1d fix(baremetal): update the grub auto configuration to fix the aarch64 disk boot (#23132) 2025-08-20 15:11:31 +08:00
屈轩
15d079f966 fix(region): sync lb eip (#23125) 2025-08-20 14:13:59 +08:00
Zexi Li
90aef7ef0c feat(region): fix ISO size display (#23128)
SGuestcdrom.Size is Byte, not MB

Co-authored-by: happygame <happygame1024@gmail.com>
2025-08-20 12:08:23 +08:00
Zexi Li
390feec8ec fix(baremetal-agent): error occurred when removing logical volumes on the arm64 host (#23122) 2025-08-20 12:00:19 +08:00
屈轩
911694c9fe fix(region): sync dns zone ns info (#23116) 2025-08-19 17:28:32 +08:00
屈轩
73199002c3 fix(region): sync eip associate resource (#23112) 2025-08-19 14:54:49 +08:00
屈轩
0dc21f1b69 fix(region): allow update vpc network cidr (#23110) 2025-08-19 14:38:53 +08:00
屈轩
f593f7f660 fix(region): add storage filter for snapshot (#23108) 2025-08-18 14:57:55 +08:00
wanyaoqi
046a6ac6cb fix(host): persistent ceph config for qemu connection (#23089) 2025-08-16 14:47:00 +08:00
Jian Qiu
7733907f9b fix: webconsole skip refererer check by default (#23092)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-16 14:45:45 +08:00
wanyaoqi
b43953fc29 fix(vpcagent): dhcp enable default gateway on default network (#23097) 2025-08-16 14:44:39 +08:00
屈轩
5f708fe816 fix(scheduledtask): force sync account (#23085) 2025-08-14 19:36:10 +08:00
Zexi Li
69056db01a fix(region): filter host by ips (#23083) 2025-08-14 18:35:28 +08:00
wanyaoqi
d48bab9ddd Automated cherry pick of #23072: fix(host): cephutil and nbd ipv6 compat (#23073)
* fix(region,host,host-image): host-image and qemu-nbd compat ipv6

* fix(host,host-deployer): cephutils add ipv6 compat
2025-08-14 18:34:44 +08:00
屈轩
d10a322aec fix(region): server snapshot policy (#23078) 2025-08-14 10:42:35 +08:00
屈轩
f694fead2e fix(region): dns record policy type (#23076) 2025-08-13 17:49:22 +08:00
屈轩
d4b04f3f2e fix(region): The eip displays the internal ip address of the virtual machine (#23068) 2025-08-12 09:59:08 +08:00
wanyaoqi
6d633b5647 feat(host): container cpufreq realtime simulate (#23051) 2025-08-11 10:24:28 +08:00
Jian Qiu
b7870e0453 fix: ipv6 compatibility issues fixes 20250809 (#23061)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-10 10:07:50 +08:00
Jian Qiu
4eb90fc442 fix: task obj_type and object nullable and default empty (#23059)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-10 08:46:59 +08:00
wanyaoqi
35093fb7a7 fix(host): lvm guest reload disk before delete snapshot (#23053) 2025-08-08 20:57:24 +08:00
Jian Qiu
9a3871014e fix: filter guest by multiple ips with exact match (#23039)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-08 17:56:10 +08:00
Zexi Li
b4e3d17178 fix(host): 修复 loop 设备被其它进程创建而导致分配失败的问题 (#23041) 2025-08-08 17:51:20 +08:00
Jian Qiu
4fa4cadb69 fix: host metrics tag add hypervisor (#23034)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-07 22:26:11 +08:00
Jian Qiu
d0ec6885d6 fix: ipv6-only mode compatibility fixes (#23031)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-06 22:02:08 +08:00
屈轩
634bdf7b90 fix(region): support lb health check sync status (#23029) 2025-08-06 17:37:44 +08:00
屈轩
117efad40d fix(region): disk update tag (#23025) 2025-08-06 15:52:11 +08:00
Jian Qiu
35aaafc09f fix: always update hostname for rhel-like os (#23017)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-06 01:06:23 +08:00
wanyaoqi
421a3e9e87 fix(region,host): host nic add default secret ipv4 address (#23015) 2025-08-02 23:07:07 +08:00
Jian Qiu
fbefeae06f fix: host network ipv6 support (#23013)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-08-02 12:15:07 +08:00
Zexi Li
ef04ac2dac feat(region): list gpu by index and device_minor (#23012) 2025-08-01 18:46:22 +08:00
屈轩
52d54cfc00 fix(region): support lb health check (#23009) 2025-08-01 18:38:41 +08:00
Zexi Li
33936c937c feat(region,host): upload index and minor info of a nvidia GPU (#23005) 2025-08-01 10:36:11 +08:00
Zexi Li
3b2632fb26 feat(region,host): auto create the file or dir of hostPath (#23001) 2025-07-31 14:01:06 +08:00
屈轩
412413c2f5 fix(region): cloudflare redirect pool (#22998) 2025-07-30 20:17:44 +08:00
屈轩
0970725598 fix(region): cloudflare lb backend operation (#22996) 2025-07-30 19:02:30 +08:00
屈轩
1012991176 fix(region): support cloudflare lb (#22993) 2025-07-30 14:51:48 +08:00
Jian Qiu
120725c311 fix: unify guest sync status and upload status procedure (#22983)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-30 10:38:11 +08:00
Jian Qiu
ea88b81f3f fix: inconsist checksum between image and its same format subimage (#22987)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-30 01:44:10 +08:00
wanyaoqi
c26ad31c8d fix(host,glance): only target qcow2 set cluster size on image convert (#22979) 2025-07-30 00:43:15 +08:00
Jian Qiu
4b0f3b4dd1 fix: glance converts all queued subimages, regardless of format (#22971)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-29 10:26:09 +08:00
wanyaoqi
5a3bc2acb6 fix(host): set qemuimg convert cluster_size 64k on compat image (#22965) 2025-07-29 00:01:10 +08:00
Jian Qiu
4080c2ddfb fix: set default worker parameter (#22958)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-28 14:12:18 +08:00
Jian Qiu
10a2c41d37 fix: host clean image with regards of container image deps (#22955)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-26 08:50:17 +08:00
wanyaoqi
a196b19b0c fix(region): iso boot do not check boot mode (#22950) 2025-07-26 02:26:55 +08:00
wanyaoqi
50519e9099 fix(host): host init no numa node (#22945) 2025-07-25 00:32:50 +08:00
屈轩
44c487eeb1 fix(region): init guest secgroup (#22941) 2025-07-24 17:15:56 +08:00
Zexi Li
1a7327c244 feat(host): 保存容器 volume 镜像时设置 min_disk 大小 (#22932) 2025-07-23 20:24:38 +08:00
屈轩
f5839b560e fix(region): add guest billing type for disk (#22936) 2025-07-23 18:53:48 +08:00
wanyaoqi
3e0231ae31 fix(region): ipv6 change ipaddr (#22924) 2025-07-23 09:29:18 +08:00
屈轩
003de57c91 fix(region): host order (#22927) 2025-07-22 15:20:01 +08:00
屈轩
ddb64eaf2e fix(region): vendor update (#22920) 2025-07-21 17:33:36 +08:00
屈轩
8248bcd67e fix(region): support ssl delete (#22912) 2025-07-16 19:55:21 +08:00
Jian Qiu
39a3918bb8 fix: dhcpv6 client id change by slice overwritten (#22906)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-16 16:19:27 +08:00
屈轩
47d9f2f434 fix(region): add is expired for certificate (#22908) 2025-07-16 15:36:00 +08:00
Zexi Li
5bdf4d1d30 fix(scheduler): netinterface cache is not informed (#22901) 2025-07-15 19:59:43 +08:00
Jian Qiu
3e5e6e175c fix: deploy ipv6 scripts fixes (#22900)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-15 18:59:42 +08:00
wanyaoqi
42e58b4996 feat(region,host-deployer): ipv6 only guest support (#22897) 2025-07-15 16:21:49 +08:00
wanyaoqi
a071cd2287 fix(host): check storage id is correct on src migrate prepare (#22892)
correct disk storage id on dest migrate prepare
2025-07-15 16:12:57 +08:00
屈轩
66748dbfcd fix(region): ssl create with zone info (#22889) 2025-07-14 18:32:15 +08:00
屈轩
d27c9be330 fix(region): ssl certificate create (#22887) 2025-07-14 16:06:22 +08:00
Jian Qiu
ea8f6c8221 fix: host metrics error for missing ip (#22883)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-12 18:00:46 +08:00
Jian Qiu
c6f84dfa94 fix: dhcpv6 support phase 3 (#22881)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-12 12:10:31 +08:00
屈轩
382c2bc6cd fix(region): add sort for host (#22877) 2025-07-11 19:08:59 +08:00
Zexi Li
598f68a7e9 fix(region): allow stopping the container in probe_failed status (#22873) 2025-07-11 10:42:07 +08:00
Jian Qiu
967d52f874 fix: host no default routes due to empty ipv6 addr (#22871)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-10 22:34:07 +08:00
wanyaoqi
d1dcfc9ed3 fix(region): do not set guest to resuce status on guest running (#22867) 2025-07-10 22:11:11 +08:00
屈轩
ebd7298d0d fix(region): 修复本地到期释放功能和资源同步冲突 (#22860) 2025-07-10 19:37:58 +08:00
Jian Qiu
992c5f498e fix: dhcpv6 support, phase 2 (#22852)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-09 14:41:34 +08:00
wanyaoqi
570b371290 fix(host): add check mem dev is null on guest setup (#22848) 2025-07-09 14:16:08 +08:00
屈轩
0b6a23e2fb fix(region): 避免删除虚拟机时,未能正常删除后挂载的磁盘 (#22841) 2025-07-07 14:46:10 +08:00
Zexi Li
da501a34d8 feat(host): support pod post cleanup configuration (#22839) 2025-07-04 17:12:22 +08:00
屈轩
34fd2c5ca4 fix(region): create disk with tags (#22833) 2025-07-04 17:08:05 +08:00
屈轩
afe4afe095 fix(region): vendor update (#22828) 2025-07-03 15:16:35 +08:00
屈轩
9121720e21 fix: compatible with other os netutils (#22826) 2025-07-03 15:01:44 +08:00
Jian Qiu
b527b1ad6b fix: dhcpv6 support, initial support (#22823)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-07-03 14:37:17 +08:00
屈轩
bdcbc15cf5 fix(region): vendor update for sync mongodb ip addr (#22817) 2025-07-03 05:33:12 +08:00
wanyaoqi
397f165d37 fix(host): set arm guest max mems to host mem (#22814) 2025-07-03 05:32:20 +08:00
wanyaoqi
f29a1d8567 fix(host): enable qemu cap detect (#22799) 2025-07-03 05:30:45 +08:00
wanyaoqi
47a9fa3505 fix(region): host calculate set mem_cmt_bound 1 on host enable hugepage (#22810) 2025-07-03 05:29:20 +08:00
wanyaoqi
7df2a43d22 fix(host): qemuimg convert add cluster_size (#22792) 2025-07-03 05:27:35 +08:00
屈轩
826f4df8f7 fix(region): vendor update (#22806) 2025-07-02 21:01:57 +08:00
屈轩
7cee63907b fix(esxi-agent): avoid esxi cache image error (#22803) 2025-07-02 19:25:32 +08:00
Zexi Li
0e50049ab1 fix(host): adjuest max loop device count to 512 (#22788) 2025-07-01 15:25:26 +08:00
屈轩
975f4ed864 fix(region): add ai gateway (#22785) 2025-06-27 22:38:21 +08:00
屈轩
5643619a7c fix(region): vendor update for cdn attribute (#22778) 2025-06-24 17:43:09 +08:00
屈轩
3e35ea56df fix(notify): support dingtalk robot sign (#22767) 2025-06-23 16:59:40 +08:00
屈轩
1ba251f053 fix(cloudmon): cloudpods collect metric interval (#22764) 2025-06-23 16:17:24 +08:00
屈轩
25d1b699c9 fix(region): vendor update for aliyun alb and nlb (#22762) 2025-06-23 10:30:26 +08:00
屈轩
19143c134a fix(region): sync remove backend group (#22759) 2025-06-20 19:38:27 +08:00
Zexi Li
27a8e098d6 feat(region,host): support port mapping rule (#22756) 2025-06-20 19:17:04 +08:00
屈轩
cb12c9fe1c fix(region): support skip sync server by tag value (#22754) 2025-06-20 18:40:35 +08:00
屈轩
fc2603ce4d fix(region): vendor update (#22750) 2025-06-20 18:12:44 +08:00
Jian Qiu
d9c5d5657e fix: task filter by owner sql revisit (#22746)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-06-20 16:06:27 +08:00
屈轩
b6b5c6041b fix(region): ssl certificate purge (#22743) 2025-06-19 17:53:10 +08:00
Jian Qiu
c1345560bb fix: use goid to identify differnt goroutine (#22740)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-06-19 14:50:47 +08:00
屈轩
8448395003 fix(region): waf rule create (#22738) 2025-06-18 20:06:16 +08:00
Zexi Li
5058f02538 Automated cherry pick of #22729: Monitor worker alert (#22730)
* fix(monitor): GetMetricMeasurement 接口只查询过去30m的数据

避免数据过多导致 victoria-metrics 报错

* fix(monitor): wildchar of alert group by field
2025-06-18 14:25:43 +08:00
屈轩
31b766a7d6 fix(region): lb listener rule associate backend group (#22734) 2025-06-18 14:15:01 +08:00
Zexi Li
650acf4ea9 fix: panic when there is no secondary IP on the host. (#22726)
Co-authored-by: glzjin <glzjin2015@gmail.com>
2025-06-17 11:15:01 +08:00
屈轩
1322a21445 fix(region): vendor update (#22725) 2025-06-16 20:07:32 +08:00
屈轩
fb26af0566 fix(region): vendor update for lb multi eip sync (#22720) 2025-06-16 17:17:27 +08:00
wanyaoqi
af0559ac35 fix(region,host): add auto merge snapshots options, preallocation options (#22713) 2025-06-13 15:19:50 +08:00
Zexi Li
72f68dd541 fix(host): dirty shutdown pod is not auto started (#22705) 2025-06-10 10:18:31 +08:00
Jian Qiu
ae09aa3c82 fix: remove cgo deps for ioctl (#22701)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-06-07 08:42:14 +08:00
屈轩
b677cef407 fix(region): vendor update (#22698) 2025-06-06 19:22:45 +08:00
屈轩
9ae9879c56 fix(region): enable cloud dns record (#22695) 2025-06-06 18:32:01 +08:00
Jian Qiu
2f8c719f03 fix: http perf stats monitor (#22689)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-06-06 18:12:16 +08:00
Zexi Li
712059cedb fix(host): marshal update status input inside error (#22692) 2025-06-06 17:27:51 +08:00
屈轩
4bbc651732 fix(region): waf rule enable disable (#22688) 2025-06-06 14:53:25 +08:00
Jian Qiu
24e525926b fix: update vendor release/4.0 20250606 (#22685)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-06-06 14:23:50 +08:00
wanyaoqi
119140fe93 fix(host): pass decoded userdata to host-deployer (#22681) 2025-06-05 23:50:51 +08:00
屈轩
1b45c3d174 fix(region): vendor update (#22678) 2025-06-05 19:28:02 +08:00
Zexi Li
9675f1d4e4 fix(host): change mount context timeout to 30s (#22676) 2025-06-05 18:40:30 +08:00
Jian Qiu
e7e13552d9 fix: cloudmon high cpu loads for bucket probing (#22658)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-06-05 17:51:26 +08:00
屈轩
91ad8f038e fix(region): vendor update (#22670) 2025-06-04 17:37:36 +08:00
Zexi Li
c5e70ed1aa fix(scheduler): wrong sort order of instance group selection (#22666) 2025-06-04 14:27:30 +08:00
Zexi Li
cdd46c490d feat(host): containerd snapshot rootfs service (#22661) 2025-06-04 11:00:42 +08:00
Zexi Li
1d69a15372 fix(host): sync container crash status (#22655) 2025-06-03 20:16:12 +08:00
Zexi Li
5237beb197 fix(host): retry stopping container forcibly (#22650) 2025-06-03 17:12:07 +08:00
Zexi Li
ffdf7a3a6e fix(host): losetup package initialization order (#22652) 2025-06-03 13:39:30 +08:00
Jian Qiu
c835c87afc fix: update vendor to fix keystone user join project not found (#22645)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-05-31 18:47:54 +08:00
Jian Qiu
58e2ea41af fix: disk statu sync recover (#22633)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-05-31 09:04:25 +08:00
Jian Qiu
addbe7f9ea fix: bucket perform mon random string generation consume high cpu load (#22639)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-05-31 09:03:21 +08:00
wanyaoqi
618722bc16 fix(host): change log level to debug on get numa node faild (#22641) 2025-05-31 09:01:55 +08:00
Zexi Li
fd0c96e6f9 refactor(region,host): container status management (#22635) 2025-05-30 17:48:42 +08:00
wanyaoqi
5a17a9e37b feat(host-deployer): deploy vlan subinterface on baremetal hypervisor (#22629)
- host-deployer add deploy vlan subinterface on baremetal hypervisor
- fix baremetal-agent cache image parse input data
2025-05-30 10:32:01 +08:00
wanyaoqi
44ed13473a feat(region,host,host-deployer): support set uefi boot order (#22560) 2025-05-30 10:31:03 +08:00
wanyaoqi
d8b00188a0 feat(region,host): qga deploy network config on attach nics (#22548) 2025-05-30 10:29:48 +08:00
屈轩
0b61ca0432 fix(region): vendor update (#22624) 2025-05-29 11:23:02 +08:00
屈轩
b9a9151555 fix(region): secgroup rule filter (#22619) 2025-05-28 18:38:37 +08:00
wanyaoqi
17db7be134 fix(host): qemu extra params format (#22609) 2025-05-27 13:34:48 +08:00
屈轩
892431d5b9 fix(region): update qcloud storage type (#22615) 2025-05-27 12:44:12 +08:00
屈轩
3d36c293e5 fix(region): add region driver for cloudflare (#22606) 2025-05-26 16:22:25 +08:00
Jian Qiu
3ff50f0d11 fix: tar ignore error revisit (#22604)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-05-26 12:35:10 +08:00
Jian Qiu
6144325daf fix: container save image with leading prefix (#22602)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-05-26 12:34:48 +08:00
Zexi Li
bf3b83870c fix: ignore init loop device error (#22601)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-05-26 11:36:09 +08:00
wanyaoqi
62b7eea828 fix(host): check min_free_kbytes size is enough (#22592) 2025-05-24 01:11:09 +08:00
Zexi Li
4e07811e2f fix(monitor): not filter status tag key (#22596) 2025-05-23 09:59:43 +08:00
Zexi Li
f819e021b3 feat(host): loop device manager (#22590) 2025-05-22 13:24:24 +08:00
屈轩
3224eac821 fix(cloudmon): add vm_ip metric for vm (#22586) 2025-05-22 10:53:59 +08:00
屈轩
a1fce125da fix(cloudmon): vm metrics with ips (#22583) 2025-05-22 10:41:11 +08:00
屈轩
aa0a6b58d3 fix(region): add filter for secgroup rule (#22580) 2025-05-21 19:27:29 +08:00
屈轩
0c9a44e279 fix(region): add account info for sec rules (#22577) 2025-05-21 18:40:18 +08:00
Zexi Li
4dd92825a8 fix(host): ignore internal stopped event of primary container (#22574) 2025-05-21 16:23:17 +08:00
屈轩
30a319fe5e fix(region): allow create public server sku (#22571) 2025-05-21 14:43:28 +08:00
Zexi Li
faf35a6879 fix(host): status of stopping primary container (#22568) 2025-05-21 12:23:33 +08:00
屈轩
4520b54a5b fix(region): init aliyun storage medium type (#22564) 2025-05-20 21:48:33 +08:00
wanyaoqi
fa53aea075 fix error when create vm with ceph disk (#22561)
Co-authored-by: liangkaijun <liangkaijun52013@gmail.com>
2025-05-20 21:28:00 +08:00
Jian Qiu
36b5532b04 feature: monitor bucket formance and resource status (#22553)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-05-19 22:28:32 +08:00
Zexi Li
01ab43941e fix(host): clean loop device before deleting (#22558) 2025-05-19 19:47:28 +08:00
屈轩
249569be9f fix(region): user sync with ctx (#22555) 2025-05-19 18:09:26 +08:00
Jian Qiu
db0b275772 fix: host files not initialized when host reboot (#22551)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-05-19 01:57:58 +08:00
wanyaoqi
e6bb86c934 fix: vendor update 2505013 (#22521) 2025-05-19 01:50:32 +08:00
屈轩
c53f707089 fix(region): vendor update (#22544) 2025-05-16 11:19:49 +08:00
屈轩
ef36176130 fix(region): guest disk iops (#22542) 2025-05-15 15:46:12 +08:00
屈轩
edd11ea1cd fix(region): show correct disk iops (#22538) 2025-05-15 12:48:51 +08:00
屈轩
4ad7d635bc fix(region): change disk billing type (#22533) 2025-05-15 11:48:26 +08:00
Zexi Li
18604b46b1 feat(region,host): change ownership of post overlay merged dir (#22525) 2025-05-13 19:52:52 +08:00
屈轩
4609c543c9 fix(region): add dns brand (#22523) 2025-05-13 16:30:57 +08:00
屈轩
779559dbdc fix(region): add proxied for dns record (#22514) 2025-05-12 17:52:46 +08:00
Zexi Li
27c6c82b82 fix(monitor): return measurements info from db directly (#22512) 2025-05-12 17:17:36 +08:00
屈轩
fa99905bf6 fix(common): avoid empty context (#22509) 2025-05-12 16:21:18 +08:00
屈轩
608e4edb4e fix(region): add cloudflare const (#22507) 2025-05-12 14:10:58 +08:00
屈轩
43c646b537 fix(notify): support notify with robotids (#22503) 2025-05-09 21:23:07 +08:00
屈轩
ad798d7bbe fix(notify): optimized notify error msg (#22501) 2025-05-09 17:35:17 +08:00
屈轩
238458066a fix(region): vendor update (#22498) 2025-05-09 14:56:01 +08:00
屈轩
90a8b10401 fix(common): obj id cache (#22495) 2025-05-09 14:50:24 +08:00
Jian Qiu
46195f72ee fix: hostfile delete validation (#22493)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-05-08 23:50:06 +08:00
屈轩
05829a225a fix(region): vendor update (#22491) 2025-05-08 18:36:31 +08:00
屈轩
f0858ce4d2 fix(common): policy tag filter cache (#22485) 2025-05-08 15:56:57 +08:00
Jian Qiu
cc3477415d fix: host files support (#22481)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
2025-05-07 11:28:47 +08:00
1464 changed files with 85618 additions and 258934 deletions

View File

@@ -4,42 +4,14 @@ on:
schedule:
- cron: "0 0 * * *"
permissions:
issues: write
jobs:
issue-check-inactive:
runs-on: ubuntu-latest
steps:
- name: Label inactive issues as stale
env:
GH_TOKEN: ${{ github.token }}
INACTIVE_DAY: "30"
INACTIVE_LABEL: "stale"
EXCLUDE_LABEL: "announcement"
run: |
set -euo pipefail
cutoff="$(date -u -d "${INACTIVE_DAY} days ago" +%Y-%m-%dT%H:%M:%SZ)"
gh issue list \
--repo "${{ github.repository }}" \
--state open \
--limit 1000 \
--json number,labels,updatedAt \
| jq -c \
--arg cutoff "$cutoff" \
--arg inactive "$INACTIVE_LABEL" \
--arg exclude "$EXCLUDE_LABEL" \
'
.[]
| select(.updatedAt < $cutoff)
| select([.labels[].name] | index($exclude) | not)
| select([.labels[].name] | index($inactive) | not)
' \
| while IFS= read -r issue; do
number="$(echo "$issue" | jq -r .number)"
echo "Marking issue #${number} as ${INACTIVE_LABEL}"
gh issue edit "$number" \
--repo "${{ github.repository }}" \
--add-label "$INACTIVE_LABEL"
done
- name: check-inactive
uses: actions-cool/issues-helper@v2
with:
actions: 'check-inactive'
inactive-label: 'stale'
inactive-day: 30
exclude-labels: 'announcement'

View File

@@ -4,41 +4,17 @@ on:
schedule:
- cron: "0 1 * * *"
permissions:
issues: write
jobs:
issue-close-require:
runs-on: ubuntu-latest
steps:
- name: Close inactive issues awaiting user feedback
env:
GH_TOKEN: ${{ github.token }}
INACTIVE_DAY: "7"
run: |
set -euo pipefail
cutoff="$(date -u -d "${INACTIVE_DAY} days ago" +%Y-%m-%dT%H:%M:%SZ)"
body="$(cat <<'EOF'
If you do not provide feedback for more than 37 days, we will close the issue and you can either reopen it or submit a new issue.
- name: need reproduce
uses: actions-cool/issues-helper@v2
with:
actions: 'close-issues'
labels: 'stale,state/awaiting user feedback'
inactive-day: 7
body: |
If you do not provide feedback for more than 37 days, we will close the issue and you can either reopen it or submit a new issue.
您超过 37 天未反馈信息,我们将关闭该 issue如有需求您可以重新打开或者提交新的 issue。
EOF
)"
# Trim leading indentation from heredoc lines for a cleaner comment.
body="$(printf '%s\n' "$body" | sed 's/^[[:space:]]*//')"
gh issue list \
--repo "${{ github.repository }}" \
--state open \
--label "stale" \
--label "state/awaiting user feedback" \
--limit 1000 \
--json number,updatedAt \
| jq -c --arg cutoff "$cutoff" '.[] | select(.updatedAt < $cutoff)' \
| while IFS= read -r issue; do
number="$(echo "$issue" | jq -r .number)"
echo "Closing issue #${number}"
gh issue close "$number" \
--repo "${{ github.repository }}" \
--comment "$body"
done
您超过 37 天未反馈信息,我们将关闭该 issue如有需求您可以重新打开或者提交新的 issue。

View File

@@ -4,19 +4,13 @@ on:
issues:
types: [closed]
permissions:
issues: write
jobs:
issue-closed-remove-labels:
runs-on: ubuntu-latest
if: "!contains(github.event.issue.labels.*.name, 'stale')"
steps:
- name: Remove state labels when issue that hasn't stale label is closed
env:
GH_TOKEN: ${{ github.token }}
run: |
gh issue edit "${{ github.event.issue.number }}" \
--repo "${{ github.repository }}" \
--remove-label "state/awaiting processing" \
--remove-label "state/awaiting user feedback" || true
- name: Remove statle labels when issue that hasn't stale label is closed
uses: actions-cool/issues-helper@v2
with:
actions: 'remove-labels'
labels: 'state/awaiting processing,state/awaiting user feedback'

View File

@@ -4,48 +4,35 @@ on:
name: Add issues workflow labels
permissions:
issues: write
jobs:
add-label-if-is-author:
runs-on: ubuntu-latest
if: (github.event.issue.user.id == github.event.comment.user.id) && !github.event.issue.pull_request && (github.event.issue.state == 'open')
steps:
- name: Add require handle label
env:
GH_TOKEN: ${{ github.token }}
run: |
gh issue edit "${{ github.event.issue.number }}" \
--repo "${{ github.repository }}" \
--add-label "state/awaiting processing"
uses: actions-cool/issues-helper@v2
with:
actions: 'add-labels'
labels: 'state/awaiting processing'
- name: Remove require reply label
env:
GH_TOKEN: ${{ github.token }}
run: |
gh issue edit "${{ github.event.issue.number }}" \
--repo "${{ github.repository }}" \
--remove-label "state/awaiting user feedback" \
--remove-label "stale" || true
uses: actions-cool/issues-helper@v2
with:
actions: 'remove-labels'
labels: 'state/awaiting user feedback,stale'
add-label-if-not-author:
runs-on: ubuntu-latest
if: (github.event.issue.user.id != github.event.comment.user.id) && !github.event.issue.pull_request && (github.event.issue.state == 'open') && (!contains(github.event.comment.body, '/keep-state'))
steps:
- name: Add require reply label
env:
GH_TOKEN: ${{ github.token }}
run: |
gh issue edit "${{ github.event.issue.number }}" \
--repo "${{ github.repository }}" \
--add-label "state/awaiting user feedback"
- name: Add require replay label
uses: actions-cool/issues-helper@v2
with:
actions: 'add-labels'
labels: 'state/awaiting user feedback'
- name: Remove require handle label
env:
GH_TOKEN: ${{ github.token }}
run: |
gh issue edit "${{ github.event.issue.number }}" \
--repo "${{ github.repository }}" \
--remove-label "state/awaiting processing" \
--remove-label "stale" || true
uses: actions-cool/issues-helper@v2
with:
actions: 'remove-labels'
labels: 'state/awaiting processing,stale'

View File

@@ -4,30 +4,22 @@ on:
issues:
types: [opened, reopened]
permissions:
issues: write
jobs:
issue-open-add-labels:
runs-on: ubuntu-latest
if: ${{ !github.event.issue.pull_request }}
steps:
- name: Add labels
env:
GH_TOKEN: ${{ github.token }}
run: |
gh issue edit "${{ github.event.issue.number }}" \
--repo "${{ github.repository }}" \
--add-label "state/awaiting processing"
uses: actions-cool/issues-helper@v2
if: ${{ !github.event.comment.pull_request.pull_request }}
with:
actions: 'add-labels'
labels: 'state/awaiting processing'
- name: Remove require reply label
env:
GH_TOKEN: ${{ github.token }}
run: |
gh issue edit "${{ github.event.issue.number }}" \
--repo "${{ github.repository }}" \
--remove-label "state/awaiting user feedback" \
--remove-label "stale" || true
uses: actions-cool/issues-helper@v2
with:
actions: 'remove-labels'
labels: 'state/awaiting user feedback,stale'
notify-author-comment:
runs-on: ubuntu-latest

View File

@@ -261,7 +261,7 @@ dep:
@echo "$$depDeprecated"
@$(MAKE) mod
RELEASE_BRANCH:=master
RELEASE_BRANCH:=release/4.0.4
GOPROXY ?= direct
mod:

View File

@@ -9,9 +9,7 @@
<img src="https://v1.cloudpods.org/images/cloudpods_logo_green.png" alt="Cloudpods" height="100">
Cloudpods是一个开源的Golang实现的云原生的融合多云/混合云的云平台,也就是一个云上之云”。Cloudpods不仅可以管理本地的虚拟机和物理机资源还可以管理多个云平台和云账号。Cloudpods隐藏了这些异构基础设施资源的数据模型和API的差异对外暴露了一套统一的API允许用户就像用一个云一样地访问多云。从而大大降低了访问多云的复杂度提升了管理多云的效率。
Cloudpods还提供了 **AI 云**一个面向大语言模型LLM推理与 AI 容器应用的统一管理平台,帮助企业在同一平台完成 AI 工作负载的部署、调度与运维,与 Cloudpods 私有云/多云资源体系无缝集成。
Cloudpods是一个开源的Golang实现的云原生的融合多云/混合云的云平台,也就是一个云上之云”。Cloudpods不仅可以管理本地的虚拟机和物理机资源还可以管理多个云平台和云账号。Cloudpods隐藏了这些异构基础设施资源的数据模型和API的差异对外暴露了一套统一的API允许用户就像用一个云一样地访问多云。从而大大降低了访问多云的复杂度提升了管理多云的效率。
## 谁需要Cloudpods?
@@ -20,25 +18,12 @@ Cloudpods还提供了 **AI 云**一个面向大语言模型LLM推理与
* 将VMware vSphere虚拟化集群转换为一个可以自服务的私有云平台
* 在混合云的场景,能够在一个界面访问私有云和公有云
* 通过一个集中的入口访问分布在多个公有云平台上的多个账号
* 当前只使用一个公有云账号但希望将来使用多云的用户
* 需要部署和管理 LLM 推理服务及 AI 容器应用,并需要 GPU 调度支持的用户
* 当前只使用一个公有云账号但希望将来使用多云的用户
## 功能
请访问[产品介绍](https://www.cloudpods.org/docs/introduction/)页面了解详细信息。
### AI 云
* **AI 推理服务**:部署和管理 LLM 推理实例(支持 Ollama、vLLM、SGLang 等),支持 GPU 调度、模型挂载与推理服务地址分配。
* **AI 应用管理**:一站式部署 LLM 应用编排、智能体助手、图像生成等 AI 容器应用。
* **模型库**:统一管理模型来源、版本与缓存,支持多实例复用、离线分发,避免重复下载。
* **模板与镜像**:通过模板定义 CPU/内存/GPU 等资源规格,通过镜像管理容器运行环境,实现标准化交付。
* **GPU 运维**GPU 设备自动探测与注册,支持 NVIDIA/CUDA 环境的统一配置与管理。
支持的 AI 工作负载:
* AI 推理Ollama、vLLM、SGLang
* AI 应用OpenClaw、Dify、ComfyUI、Hermes Agent
### 支持的云平台
* 公有云:
@@ -52,38 +37,29 @@ Cloudpods还提供了 **AI 云**一个面向大语言模型LLM推理与
* 天翼云
* 移动云
* 京东云
* 火山引擎
* 百度云
* 金山云
* 青云
* Oracle Cloud
* 联通云
* 私有云:
* OpenStack
* ZStack
* Alibaba Cloud Apsara (阿里飞天)
* Alibaba Cloud Aspara (阿里飞天)
* Huawei HCSO (华为HCSO)
* Nutanix
* BingoCloud
* OceanBase
* 本地基础设施资源:
* 基于 KVM 实现的轻量级私有云
* VMware vSphere vCenter/ESXi
* Proxmox VE
* 裸金属 (IPMI, Redfish API)
* 对象存储 (Minio, Ceph, XSky)
* VMWare vSphere vCenter/ESXi
* Baremetals (IPMI, Redfish API)
* Object storages (Minio, Ceph, XSky)
* NAS (Ceph)
### 支持的云资源
* 服务器实例、磁盘、网卡、网络、VPC、存储、宿主机、二层网络、快照、快照策略、安全组、弹性 IP、SSH 密钥对、镜像
* 负载均衡实例、监听、后端服务器组、后端服务器、TLS 证书、访问控制
* 对象存储:存储桶、对象
* NAS:文件系统、权限组、挂载点
* RDS:实例、账号、备份、数据库、参数、权限
* 弹性缓存:实例、账号、备份、参数
* DNSDNS 区域、DNS 记录
* VPCVPCVPC 对等连接、跨 VPC 网络、NAT 网关、DNAT/SNAT 规则、路由表、路由条目
* Servers: instances, disks, network interfaces, networks, vpcs, storages, hosts, wires, snapshots, snapshot policies, security groups, elastic IPs, SSH keypairs, images
* Load Balancers: instances, listeners, backend groups, backends, TLS certificates, ACLs
* Object Storage: buckets, objects
* NAS: file_systems, access_groups, mount_targets
* RDS: instances, accounts, backups, databases, parameters, privileges
* Elastic Cache: instances, accounts, backups, parameters
* DNS: DNS zones, DNS records
* VPC: VPCs, VPC peering, inter-VPC network, NAT gateway, DNAT/SNAT rules, route tables, route entries
## 安装部署

View File

@@ -11,34 +11,19 @@
Cloudpods is a cloud-native open source unified multi/hybrid-cloud platform developed with Golang, i.e. Cloudpods is *a cloud on clouds*. Cloudpods is able to manage not only on-premise KVM/baremetals, but also resources from many cloud accounts across many cloud providers. It hides the differences of underlying cloud providers and exposes one set of APIs that allow programatically interacting with these many clouds.
Cloudpods also provides **AI Cloud**, a unified management platform for large language model (LLM) inference and AI container applications, helping enterprises deploy, schedule, and operate AI workloads on a single platform, seamlessly integrated with the Cloudpods private cloud / multi-cloud resource ecosystem.
## Who needs Cloudpods?
* Those who need a simple solution to virtualize a few physical servers into a private cloud
* Those who need a compact and fully automatic baremetal lift-cycle management solution
* Those who want to turn a VMware vSphere virtualization cluster into a private cloud
* Those who need a cohesive view of both public and private cloud in a hybrid cloud setup
* Those who need a centric portal to access multiple accounts from multiple public clouds
* Those who need a centric portal to access multiple acccounts from multiple public clouds
* Those who is currently using a single cloud account, but will not lose the possibility to adopt multicloud strategy
* Those who need to deploy and manage LLM inference services and AI container applications with GPU support
## Features
See [Introduction](https://www.cloudpods.org/docs/introduction/) for details.
### AI Cloud
* **AI Inference Services**: Deploy and manage LLM inference instances (Ollama, vLLM, SGLang, and more) with GPU scheduling, model mounting, and inference service address allocation.
* **AI Application Management**: One-stop deployment of LLM application orchestration, agent assistants, image generation, and other AI container applications.
* **Model Library**: Unified management of model sources, versions, and caches, supporting multi-instance reuse and offline distribution.
* **Templates and Images**: Define resource specifications (CPU/memory/GPU) through templates, manage container runtime environments through images.
* **GPU Operations**: Automatic GPU device detection and registration, unified NVIDIA/CUDA environment configuration and management.
Supported AI workloads:
* AI Inference: Ollama, vLLM, SGLang
* AI Applications: OpenClaw, Dify, ComfyUI, Hermes Agent
### Supported cloud providers
* Public Clouds:
@@ -52,24 +37,15 @@ Supported AI workloads:
* Ctyun (China Telecom)
* ECloud (China Mobile)
* JDCloud
* Volcengine
* Baidu Cloud
* Kingsoft Cloud
* QingCloud
* Oracle Cloud
* China Unicom Cloud
* Private Clouds:
* OpenStack
* ZStack
* Alibaba Cloud Apsara
* Alibaba Cloud Aspara
* Huawei HCSO
* Nutanix
* BingoCloud
* OceanBase
* On-premise resources:
* Lightweight private cloud built on KVM
* VMware vSphere vCenter/ESXi
* Proxmox VE
* VMWare vSphere vCenter/ESXi
* Baremetals (IPMI, Redfish API)
* Object storages (Minio, Ceph, XSky)
* NAS (Ceph)
@@ -108,7 +84,7 @@ Please check this [issue](https://github.com/yunionio/cloudpods/issues/11427) fo
## Changelog
See [Release Notes](https://www.cloudpods.org/en/docs/release-notes/) and [Changelog](https://www.cloudpods.org/en/docs/development/changelog/) for details.
See [Relase Notes](https://www.cloudpods.org/en/docs/release-notes/) and [Changelog](https://www.cloudpods.org/en/docs/development/changelog/) for details.
## Contribution
@@ -121,3 +97,4 @@ Apache License 2.0. See [LICENSE](./LICENSE).
## AI-generated doc
[DeepWiki](https://deepwiki.com/yunionio/cloudpods) provides an amazing AI-generated doc of this project, you may refer to it for more detailed and comprehensive understanding of codes.

View File

@@ -1,138 +0,0 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package image
import (
"io"
"os"
"strings"
"github.com/cheggaaa/pb/v3"
"yunion.io/x/jsonutils"
"yunion.io/x/pkg/errors"
"yunion.io/x/onecloud/cmd/climc/shell"
"yunion.io/x/onecloud/pkg/mcclient"
modules "yunion.io/x/onecloud/pkg/mcclient/modules/image"
baseoptions "yunion.io/x/onecloud/pkg/mcclient/options"
options "yunion.io/x/onecloud/pkg/mcclient/options/image"
)
func init() {
cmd := shell.NewResourceCmd(modules.ContainerRegistries)
cmd.List(new(options.ContainerRegistryListOptions))
cmd.Show(new(options.ContainerRegistryIdOptions))
cmd.Create(new(options.ContainerRegistryCreateOptions))
cmd.Delete(new(options.ContainerRegistryIdOptions))
cmd.Get("images", new(options.ContainerRegistryGetImagesOptions))
cmd.Get("image-tags", new(options.ContainerRegistryGetImageTagsOptions))
cmd.Get("config", new(options.ContainerRegistryIdOptions))
cmd.PerformClass("import-from-kubeserver", new(options.ContainerRegistryImportOptions))
cmd.Perform("public", &baseoptions.BasePublicOptions{})
cmd.Perform("private", &baseoptions.BaseIdOptions{})
type UploadOptions struct {
REGISTRY string `help:"The name or id of registry" json:"-"`
FILE string `help:"The container tar image" json:"-"`
Name string `help:"Override image name" json:"name"`
Tag string `help:"Override image tag" json:"tag"`
}
R(new(UploadOptions), "container-registry-upload-image", "Upload a docker image", func(s *mcclient.ClientSession, args *UploadOptions) error {
f, err := os.Open(args.FILE)
if err != nil {
return err
}
defer f.Close()
finfo, err := f.Stat()
if err != nil {
return err
}
size := finfo.Size()
bar := pb.Full.Start64(size)
barReader := bar.NewProxyReader(f)
param := jsonutils.Marshal(args)
img, err := modules.ContainerRegistries.UploadImage(s, args.REGISTRY, param, barReader, size)
if err != nil {
return err
}
printObject(img)
return nil
})
type DownloadOptions struct {
NAME string `help:"The name of image, e.g. 'influxdb:1.7.7'"`
Registry string `help:"The name or id of registry" json:"-"`
Output string `help:"Saved file path"`
Insecure bool `help:"Set insecure"`
Username string `help:"Image registry username"`
Password string `help:"Image registry password"`
}
R(new(DownloadOptions), "container-registry-download-image", "Download container image to a file", func(s *mcclient.ClientSession, args *DownloadOptions) error {
var (
fileName string
src io.Reader
size int64
err error
)
if args.Registry != "" {
parts := strings.Split(args.NAME, ":")
if len(parts) != 2 {
return errors.Errorf("invalid NAME %q, use format <name>:<tag>", args.NAME)
}
fileName, src, size, err = modules.ContainerRegistries.DownloadImage(s, args.Registry, parts[0], parts[1])
if err != nil {
return errors.Wrap(err, "download image")
}
} else {
fileName, src, size, err = modules.ContainerRegistries.DownloadImageByManager(s, &modules.DownloadImageByManagerInput{
Insecure: args.Insecure,
Image: args.NAME,
Username: args.Username,
Password: args.Password,
})
if err != nil {
return errors.Wrap(err, "download image by manager")
}
}
output := args.Output
if output == "" && fileName != "" {
output = fileName
}
if output == "" {
return errors.Errorf("--output filepath must provide")
}
f, err := os.Create(output)
if err != nil {
return errors.Wrapf(err, "create saved file: %q", args.Output)
}
defer f.Close()
bar := pb.Full.Start64(size)
barReader := bar.NewProxyReader(src)
if _, err := io.Copy(f, barReader); err != nil {
return errors.Wrap(err, "save image")
}
return nil
})
imgCmd := shell.NewResourceCmd(&modules.ContainerImages)
imgCmd.List(new(options.ContainerImageListOptions))
imgCmd.Show(new(options.ContainerImageIdOptions))
imgCmd.Create(new(options.ContainerImageCreateOptions))
imgCmd.Update(new(options.ContainerImageUpdateOptions))
imgCmd.Delete(new(options.ContainerImageIdOptions))
imgCmd.Perform("public", &baseoptions.BasePublicOptions{})
imgCmd.Perform("private", &baseoptions.BaseIdOptions{})
}

View File

@@ -203,6 +203,37 @@ definitions:
PerformEnableInput:
type: object
x-go-package: yunion.io/x/onecloud/pkg/apis
PerformStatusInput:
properties:
host_id:
description: call from host id
type: string
x-go-name: HostId
power_states:
description: 电源状态
type: string
x-go-name: PowerStates
reason:
description: 更改状态的原因描述
type: string
x-go-name: Reason
status:
description: 更改的目标状态值
type: string
x-go-name: Status
required:
- status
type: object
x-go-package: yunion.io/x/onecloud/pkg/apis
PurgeSplitTableInput:
properties:
tables:
items:
type: string
type: array
x-go-name: Tables
type: object
x-go-package: yunion.io/x/onecloud/pkg/apis
STag:
properties:
key:
@@ -215,6 +246,45 @@ definitions:
x-go-name: Value
type: object
x-go-package: yunion.io/x/onecloud/pkg/util/tagutils
StatusStatistic:
properties:
TotalCpuCount:
description: CPU总量
format: int64
type: integer
TotalDiskSizeMb:
description: 存储总量
format: int64
type: integer
TotalMemSizeMb:
description: 内存总量
format: int64
type: integer
status_info:
items:
$ref: '#/definitions/StatusStatisticStatusInfo'
type: array
x-go-name: StatusInfo
type: object
x-go-package: yunion.io/x/onecloud/pkg/apis
StatusStatisticStatusInfo:
properties:
Status:
type: string
pending_deleted_count:
description: |-
回收站数量
需要指定pending_delete=all
format: int64
type: integer
x-go-name: PendingDeletedCount
total_count:
description: 资源总数
format: int64
type: integer
x-go-name: TotalCount
type: object
x-go-package: yunion.io/x/onecloud/pkg/apis
TTagSet:
items:
$ref: '#/definitions/STag'
@@ -344,11 +414,6 @@ paths:
name: show_fail_reason
type: boolean
x-go-name: ShowFailReason
- description: 是否返回状态统计信息默认为False
in: query
name: summary_stats
type: boolean
x-go-name: SummaryStats
- description: 指定查询的权限范围可能值为project, domain or system
in: query
name: scope
@@ -424,7 +489,13 @@ paths:
name: providers
type: array
x-go-name: Providers
- in: query
- description: |-
列出指定云平台品牌的资源一般来说brand和provider相同除了以上支持的provider之外还支持以下band
Brand | Provider | 说明 |
----------|----------|------------|
DStack | ZStack | 滴滴云私有云 |
in: query
items:
type: string
name: brands
@@ -604,21 +675,83 @@ paths:
- in: query
items:
type: string
name: field
name: Field
type: array
x-go-name: Field
- in: query
items:
type: string
name: extra_field
name: ExtraField
type: array
x-go-name: ExtraField
responses:
"200":
$ref: '#/responses/cloudevent_GetPropertyDistinctFieldOutput'
summary: 获取指定资源类的信息DistinctField
tags:
- cloudevent
/cloudevents/distinct-fields:
get:
description: 获取指定资源类的信息DistinctFields
operationId: cloudevent_GetPropertyDistinctFields
responses:
"200":
$ref: '#/responses/cloudevent_GetPropertyDistinctFieldsOutput'
summary: 获取指定资源类的信息DistinctFields
tags:
- cloudevent
/cloudevents/purge-splitable:
post:
description: 执行操作PurgeSplitable
operationId: cloudevent_PerformPurgeSplitable
parameters:
- in: body
name: body
schema:
properties:
cloudevent:
$ref: '#/definitions/PurgeSplitTableInput'
type: object
x-go-name: Body
responses:
"200":
$ref: '#/responses/cloudevent_PerformPurgeSplitableOutput'
summary: 执行操作PurgeSplitable
tags:
- cloudevent
/cloudevents/splitable:
get:
description: 获取指定资源类的信息Splitable
operationId: cloudevent_GetPropertySplitable
responses:
"200":
$ref: '#/responses/cloudevent_GetPropertySplitableOutput'
summary: 获取指定资源类的信息Splitable
tags:
- cloudevent
/cloudevents/splitable-export:
get:
description: 获取指定资源类的信息SplitableExport
operationId: cloudevent_GetPropertySplitableExport
parameters:
- in: query
name: table
type: string
x-go-name: Table
- format: int64
in: query
name: offset
type: integer
x-go-name: Offset
- format: int64
in: query
name: limit
type: integer
x-go-name: Limit
responses:
"200":
$ref: '#/responses/cloudevent_GetPropertySplitableExportOutput'
summary: 获取指定资源类的信息SplitableExport
tags:
- cloudevent
/cloudproviders:
get:
description: 列表
@@ -727,11 +860,6 @@ paths:
name: show_fail_reason
type: boolean
x-go-name: ShowFailReason
- description: 是否返回状态统计信息默认为False
in: query
name: summary_stats
type: boolean
x-go-name: SummaryStats
- $ref: '#/definitions/TTagSet'
description: 通过标签过滤(包含这些标签)
in: query
@@ -901,6 +1029,50 @@ paths:
summary: 更新
tags:
- cloudprovider
/cloudproviders/{id}/class-metadata:
get:
description: 获取指定信息ClassMetadata
operationId: cloudprovider_GetDetailsClassMetadata
parameters:
- description: The Id or Name of cloudprovider
in: path
name: id
required: true
type: string
x-go-name: Id
responses:
"200":
$ref: '#/responses/cloudprovider_GetDetailsClassMetadataOutput'
summary: 获取指定信息ClassMetadata
tags:
- cloudprovider
post:
description: 执行操作ClassMetadata
operationId: cloudprovider_PerformClassMetadata
parameters:
- description: The Id or Name of cloudprovider
in: path
name: id
required: true
type: string
x-go-name: Id
- in: body
name: body
schema:
properties:
cloudprovider:
additionalProperties:
type: string
type: object
x-go-name: Input
type: object
x-go-name: Body
responses:
"200":
$ref: '#/responses/cloudprovider_PerformClassMetadataOutput'
summary: 更新资源的 class 标签
tags:
- cloudprovider
/cloudproviders/{id}/disable:
post:
description: 执行操作Disable
@@ -988,6 +1160,107 @@ paths:
summary: 获取资源标签(元数据)
tags:
- cloudprovider
/cloudproviders/{id}/org-metadata:
get:
description: 获取指定信息OrgMetadata
operationId: cloudprovider_GetDetailsOrgMetadata
parameters:
- description: The Id or Name of cloudprovider
in: path
name: id
required: true
type: string
x-go-name: Id
responses:
"200":
$ref: '#/responses/cloudprovider_GetDetailsOrgMetadataOutput'
summary: 获取指定信息OrgMetadata
tags:
- cloudprovider
/cloudproviders/{id}/set-class-metadata:
post:
description: 执行操作SetClassMetadata
operationId: cloudprovider_PerformSetClassMetadata
parameters:
- description: The Id or Name of cloudprovider
in: path
name: id
required: true
type: string
x-go-name: Id
- in: body
name: body
schema:
properties:
cloudprovider:
additionalProperties:
type: string
type: object
x-go-name: Input
type: object
x-go-name: Body
responses:
"200":
$ref: '#/responses/cloudprovider_PerformSetClassMetadataOutput'
summary: 全量替换资源的所有 class 标签
tags:
- cloudprovider
/cloudproviders/{id}/set-org-metadata:
post:
description: 执行操作SetOrgMetadata
operationId: cloudprovider_PerformSetOrgMetadata
parameters:
- description: The Id or Name of cloudprovider
in: path
name: id
required: true
type: string
x-go-name: Id
- in: body
name: body
schema:
properties:
cloudprovider:
additionalProperties:
type: string
type: object
x-go-name: Input
type: object
x-go-name: Body
responses:
"200":
$ref: '#/responses/cloudprovider_PerformSetOrgMetadataOutput'
summary: 全量替换资源的所有 class 标签
tags:
- cloudprovider
/cloudproviders/{id}/set-user-metadata:
post:
description: 执行操作SetUserMetadata
operationId: cloudprovider_PerformSetUserMetadata
parameters:
- description: The Id or Name of cloudprovider
in: path
name: id
required: true
type: string
x-go-name: Id
- in: body
name: body
schema:
properties:
cloudprovider:
additionalProperties:
type: string
type: object
x-go-name: Input
type: object
x-go-name: Body
responses:
"200":
$ref: '#/responses/cloudprovider_PerformSetUserMetadataOutput'
summary: 全量替换资源的所有用户标签
tags:
- cloudprovider
/cloudproviders/{id}/status:
get:
description: 获取指定信息Status
@@ -1005,6 +1278,134 @@ paths:
summary: 获取资源状态
tags:
- cloudprovider
post:
description: 执行操作Status
operationId: cloudprovider_PerformStatus
parameters:
- description: The Id or Name of cloudprovider
in: path
name: id
required: true
type: string
x-go-name: Id
- in: body
name: body
schema:
properties:
cloudprovider:
$ref: '#/definitions/PerformStatusInput'
type: object
x-go-name: Body
responses:
"200":
$ref: '#/responses/cloudprovider_PerformStatusOutput'
summary: 更新资源状态
tags:
- cloudprovider
/cloudproviders/distinct-field:
get:
description: 获取指定资源类的信息DistinctField
operationId: cloudprovider_GetPropertyDistinctField
responses:
"200":
$ref: '#/responses/cloudprovider_GetPropertyDistinctFieldOutput'
summary: 获取指定资源类的信息DistinctField
tags:
- cloudprovider
/cloudproviders/distinct-fields:
get:
description: 获取指定资源类的信息DistinctFields
operationId: cloudprovider_GetPropertyDistinctFields
responses:
"200":
$ref: '#/responses/cloudprovider_GetPropertyDistinctFieldsOutput'
summary: 获取指定资源类的信息DistinctFields
tags:
- cloudprovider
/cloudproviders/purge-splitable:
post:
description: 执行操作PurgeSplitable
operationId: cloudprovider_PerformPurgeSplitable
parameters:
- in: body
name: body
schema:
properties:
cloudprovider:
$ref: '#/definitions/PurgeSplitTableInput'
type: object
x-go-name: Body
responses:
"200":
$ref: '#/responses/cloudprovider_PerformPurgeSplitableOutput'
summary: 执行操作PurgeSplitable
tags:
- cloudprovider
/cloudproviders/splitable:
get:
description: 获取指定资源类的信息Splitable
operationId: cloudprovider_GetPropertySplitable
responses:
"200":
$ref: '#/responses/cloudprovider_GetPropertySplitableOutput'
summary: 获取指定资源类的信息Splitable
tags:
- cloudprovider
/cloudproviders/splitable-export:
get:
description: 获取指定资源类的信息SplitableExport
operationId: cloudprovider_GetPropertySplitableExport
parameters:
- in: query
name: table
type: string
x-go-name: Table
- format: int64
in: query
name: offset
type: integer
x-go-name: Offset
- format: int64
in: query
name: limit
type: integer
x-go-name: Limit
responses:
"200":
$ref: '#/responses/cloudprovider_GetPropertySplitableExportOutput'
summary: 获取指定资源类的信息SplitableExport
tags:
- cloudprovider
/cloudproviders/statistics:
get:
description: 获取指定资源类的信息Statistics
operationId: cloudprovider_GetPropertyStatistics
responses:
"200":
$ref: '#/responses/cloudprovider_GetPropertyStatisticsOutput'
summary: 获取指定资源类的信息Statistics
tags:
- cloudprovider
/cloudproviders/tag-value-pairs:
get:
description: 获取指定资源类的信息TagValuePairs
operationId: cloudprovider_GetPropertyTagValuePairs
responses:
"200":
$ref: '#/responses/cloudprovider_GetPropertyTagValuePairsOutput'
summary: 获取指定资源类的信息TagValuePairs
tags:
- cloudprovider
/cloudproviders/tag-value-tree:
get:
description: 获取指定资源类的信息TagValueTree
operationId: cloudprovider_GetPropertyTagValueTree
responses:
"200":
$ref: '#/responses/cloudprovider_GetPropertyTagValueTreeOutput'
summary: 获取指定资源类的信息TagValueTree
tags:
- cloudprovider
produces:
- application/json
responses:
@@ -1024,6 +1425,12 @@ responses:
type: object
cloudevent_GetPropertyDistinctFieldOutput:
description: ""
cloudevent_GetPropertyDistinctFieldsOutput:
description: ""
cloudevent_GetPropertySplitableExportOutput:
description: ""
cloudevent_GetPropertySplitableOutput:
description: ""
cloudevent_ListItemFilterOutput:
description: ""
schema:
@@ -1046,6 +1453,8 @@ responses:
type: integer
x-go-name: Total
type: object
cloudevent_PerformPurgeSplitableOutput:
description: ""
cloudevent_ValidateCreateDataOutput:
description: ""
schema:
@@ -1074,6 +1483,16 @@ responses:
cloudprovider:
$ref: '#/definitions/EnabledStatusStandaloneResourceDetails'
type: object
cloudprovider_GetDetailsClassMetadataOutput:
description: ""
schema:
properties:
cloudprovider:
additionalProperties:
type: string
type: object
x-go-name: Output
type: object
cloudprovider_GetDetailsMetadataOutput:
description: ""
schema:
@@ -1084,6 +1503,16 @@ responses:
type: object
x-go-name: Output
type: object
cloudprovider_GetDetailsOrgMetadataOutput:
description: ""
schema:
properties:
cloudprovider:
additionalProperties:
type: string
type: object
x-go-name: Output
type: object
cloudprovider_GetDetailsStatusOutput:
description: ""
schema:
@@ -1091,6 +1520,25 @@ responses:
cloudprovider:
$ref: '#/definitions/GetDetailsStatusOutput'
type: object
cloudprovider_GetPropertyDistinctFieldOutput:
description: ""
cloudprovider_GetPropertyDistinctFieldsOutput:
description: ""
cloudprovider_GetPropertySplitableExportOutput:
description: ""
cloudprovider_GetPropertySplitableOutput:
description: ""
cloudprovider_GetPropertyStatisticsOutput:
description: ""
schema:
properties:
cloudprovider:
$ref: '#/definitions/StatusStatistic'
type: object
cloudprovider_GetPropertyTagValuePairsOutput:
description: ""
cloudprovider_GetPropertyTagValueTreeOutput:
description: ""
cloudprovider_ListItemFilterOutput:
description: ""
schema:
@@ -1113,10 +1561,22 @@ responses:
type: integer
x-go-name: Total
type: object
cloudprovider_PerformClassMetadataOutput:
description: ""
cloudprovider_PerformDisableOutput:
description: ""
cloudprovider_PerformEnableOutput:
description: ""
cloudprovider_PerformPurgeSplitableOutput:
description: ""
cloudprovider_PerformSetClassMetadataOutput:
description: ""
cloudprovider_PerformSetOrgMetadataOutput:
description: ""
cloudprovider_PerformSetUserMetadataOutput:
description: ""
cloudprovider_PerformStatusOutput:
description: ""
cloudprovider_ValidateCreateDataOutput:
description: ""
schema:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

39
go.mod
View File

@@ -32,7 +32,6 @@ require (
github.com/gin-gonic/gin v1.7.7
github.com/go-ldap/ldap/v3 v3.1.5
github.com/go-yaml/yaml v2.1.0+incompatible
github.com/goharbor/go-client v0.26.2
github.com/golang-plus/errors v1.0.0
github.com/golang-plus/uuid v1.0.0
github.com/golang/mock v1.6.0
@@ -65,14 +64,12 @@ require (
github.com/mitchellh/go-wordwrap v1.0.1
github.com/moby/term v0.5.0
github.com/mogaika/udf v0.0.0-20171019171931-167f0ab01c73
github.com/opencontainers/go-digest v1.0.0
github.com/opencontainers/runtime-spec v1.1.0
github.com/petermattis/goid v0.0.0-20250904145737-900bdf8bb490
github.com/pierrec/lz4/v4 v4.1.17
github.com/pkg/errors v0.9.1
github.com/pkg/sftp v1.13.6
github.com/pquerna/otp v1.2.0
github.com/regclient/regclient v0.4.8
github.com/satori/go.uuid v1.2.0
github.com/sergi/go-diff v1.2.0
github.com/serialx/hashring v0.0.0-20180504054112-49a4782e9908
@@ -117,15 +114,15 @@ require (
k8s.io/cri-api v0.28.15
k8s.io/klog/v2 v2.90.1
moul.io/http2curl/v2 v2.3.0
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20260916101519-866f1e3144cf
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20260904120449-8aa2a5d6ba7a
yunion.io/x/executor v0.0.0-20260312022053-f538abd2b005
yunion.io/x/jsonutils v1.0.1-0.20260917025845-3108cd9a32ea
yunion.io/x/jsonutils v1.0.1-0.20260916031541-8e0c8de6eb2e
yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91
yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900
yunion.io/x/pkg v1.10.4-0.20260918012554-27cd9d2e093b
yunion.io/x/pkg v1.10.4-0.20260722094907-0da70a14584f
yunion.io/x/s3cli v0.0.0-20241221171442-1c11599d28e1
yunion.io/x/sqlchemy v1.1.3-0.20260917035232-d682485b3a12
yunion.io/x/structarg v0.0.0-20260917033311-96c7653334ac
yunion.io/x/sqlchemy v1.1.3-0.20260807102031-1d7e260d0dcc
yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c
)
require (
@@ -138,6 +135,14 @@ require (
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
github.com/Azure/go-autorest/autorest v0.11.28 // indirect
github.com/Azure/go-autorest/autorest/adal v0.9.18 // indirect
github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 // indirect
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 // indirect
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
github.com/Azure/go-autorest/logger v0.2.1 // indirect
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
github.com/ClickHouse/clickhouse-go v1.5.4 // indirect
github.com/DataDog/datadog-agent/pkg/obfuscate v0.0.0-20211129110424-6491aa3bf583 // indirect
github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.42.0-rc.1 // indirect
@@ -170,7 +175,6 @@ require (
github.com/anacrolix/utp v0.1.0 // indirect
github.com/aokoli/goutils v1.0.1 // indirect
github.com/apparentlymart/go-cidr v1.1.0 // indirect
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect
github.com/aws/aws-sdk-go v1.44.194 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 // indirect
github.com/aws/aws-sdk-go-v2/config v1.31.12 // indirect
@@ -212,9 +216,9 @@ require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d // indirect
github.com/dgraph-io/ristretto v0.1.0 // indirect
github.com/dimchansky/utfbom v1.1.1 // indirect
github.com/dnstap/golang-dnstap v0.4.0 // indirect
github.com/docker/go-events v0.0.0-20250114142523-c867878c5e32 // indirect
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect
github.com/edsrzf/mmap-go v1.1.0 // indirect
github.com/emicklei/go-restful/v3 v3.10.1 // indirect
@@ -230,25 +234,18 @@ require (
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-openapi/analysis v0.20.1 // indirect
github.com/go-openapi/errors v0.20.1 // indirect
github.com/go-openapi/jsonpointer v0.19.5 // indirect
github.com/go-openapi/jsonreference v0.20.0 // indirect
github.com/go-openapi/loads v0.21.0 // indirect
github.com/go-openapi/runtime v0.21.0 // indirect
github.com/go-openapi/spec v0.20.4 // indirect
github.com/go-openapi/strfmt v0.21.0 // indirect
github.com/go-openapi/swag v0.19.15 // indirect
github.com/go-openapi/validate v0.20.3 // indirect
github.com/go-openapi/swag v0.19.14 // indirect
github.com/go-playground/locales v0.13.0 // indirect
github.com/go-playground/universal-translator v0.17.0 // indirect
github.com/go-playground/validator/v10 v10.4.1 // indirect
github.com/go-sql-driver/mysql v1.6.0 // indirect
github.com/go-stack/stack v1.8.0 // indirect
github.com/goccy/go-json v0.9.7 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/gofrs/uuid v4.1.0+incompatible // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v4 v4.2.0 // indirect
github.com/golang/glog v1.2.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/snappy v0.0.4 // indirect
@@ -305,7 +302,6 @@ require (
github.com/minio/sha256-simd v1.0.0 // indirect
github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.4.2 // indirect
github.com/moby/locker v1.0.1 // indirect
github.com/moby/sys/mountinfo v0.6.2 // indirect
github.com/moby/sys/sequential v0.5.0 // indirect
@@ -323,7 +319,7 @@ require (
github.com/multiformats/go-varint v0.0.6 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b // indirect
github.com/opencontainers/runc v1.1.5 // indirect
github.com/opencontainers/selinux v1.11.0 // indirect
@@ -391,7 +387,6 @@ require (
github.com/yusufpapurcu/wmi v1.2.2 // indirect
go.etcd.io/bbolt v1.3.7 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.7 // indirect
go.mongodb.org/mongo-driver v1.7.5 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.48.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0 // indirect

278
go.sum
View File

@@ -58,6 +58,26 @@ github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0/go.mod
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc=
github.com/Azure/go-autorest/autorest v0.11.28 h1:ndAExarwr5Y+GaHE6VCaY1kyS/HwwGGyuimVhWsHOEM=
github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA=
github.com/Azure/go-autorest/autorest/adal v0.9.18 h1:kLnPsRjzZZUF3K5REu/Kc+qMQrvuza2bwSnNdhmzLfQ=
github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 h1:wkAZRgT/pn8HhFyzfe9UnqOjJYqlembgCTi72Bm/xKk=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.12/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 h1:0W/yGmFdTIT77fvdlGZ0LMISoLHFJ7Tx4U0yeB+uFs4=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg=
github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0=
@@ -88,10 +108,7 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE
github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM=
github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w=
github.com/RoaringBitmap/roaring v0.4.17/go.mod h1:D3qVegWTmfCaX4Bl5CrBE9hfrSrrXIr8KVNvRsDi1NI=
@@ -105,7 +122,6 @@ github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9
github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM=
github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA=
github.com/a8m/mark v0.1.1-0.20170507133748-44f2db618845/go.mod h1:c8Mh99Cw82nrsAnPgxQSZHkswVOJF7/MqZb1ZdvriLM=
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
github.com/ajwerner/btree v0.0.0-20211221152037-f427b3e689c0 h1:byYvvbfSo3+9efR4IeReh77gVs4PnNDR3AMOE9NJ7a0=
github.com/ajwerner/btree v0.0.0-20211221152037-f427b3e689c0/go.mod h1:q37NoqncT41qKc048STsifIt69LfUJ8SrWWcz/yam5k=
github.com/alecthomas/assert/v2 v2.0.0-alpha3 h1:pcHeMvQ3OMstAWgaeaXIAL8uzB9xMm2zlxt+/4ml8lk=
@@ -178,22 +194,13 @@ github.com/anacrolix/upnp v0.1.4 h1:+2t2KA6QOhm/49zeNyeVwDu1ZYS9dB9wfxyVvh/wk7U=
github.com/anacrolix/upnp v0.1.4/go.mod h1:Qyhbqo69gwNWvEk1xNTXsS5j7hMHef9hdr984+9fIic=
github.com/anacrolix/utp v0.1.0 h1:FOpQOmIwYsnENnz7tAGohA+r6iXpRjrq8ssKSre2Cp4=
github.com/anacrolix/utp v0.1.0/go.mod h1:MDwc+vsGEq7RMw6lr2GKOEqjWny5hO5OZXRVNaBJ2Dk=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/aokoli/goutils v1.0.1 h1:7fpzNGoJ3VA8qcrm++XEE1QUe0mIwNeLa02Nwq7RDkg=
github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=
github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU=
github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg=
github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg=
github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ=
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY=
github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k=
github.com/aws/aws-sdk-go v1.44.194 h1:1ZDK+QDcc5oRbZGgRZSz561eR8XVizXCeGpoZKo33NU=
github.com/aws/aws-sdk-go v1.44.194/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
@@ -345,6 +352,8 @@ github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/Lu
github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug=
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA=
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/dnstap/golang-dnstap v0.4.0 h1:KRHBoURygdGtBjDI2w4HifJfMAhhOqDuktAokaSa234=
github.com/dnstap/golang-dnstap v0.4.0/go.mod h1:FqsSdH58NAmkAvKcpyxht7i4FoBjKu8E4JUPt8ipSUs=
github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68=
@@ -356,12 +365,9 @@ github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKoh
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-events v0.0.0-20250114142523-c867878c5e32 h1:EHZfspsnLAz8Hzccd67D5abwLiqoqym2jz/jOS39mCk=
github.com/docker/go-events v0.0.0-20250114142523-c867878c5e32/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA=
github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4=
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE=
github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 h1:cenwrSVm+Z7QLSV/BsnenAOcDXdX4cMv4wP0B/5QbPg=
github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
@@ -420,8 +426,6 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs=
github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
@@ -459,109 +463,18 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI=
github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk=
github.com/go-openapi/analysis v0.19.4/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk=
github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU=
github.com/go-openapi/analysis v0.19.10/go.mod h1:qmhS3VNFxBlquFJ0RGoDtylO9y4pgTAUNE9AEEMdlJQ=
github.com/go-openapi/analysis v0.19.16/go.mod h1:GLInF007N83Ad3m8a/CbQ5TPzdnGT7workfHwuVjNVk=
github.com/go-openapi/analysis v0.20.0/go.mod h1:BMchjvaHDykmRMsK40iPtvyOfFdMMxlOmQr9FBZk+Og=
github.com/go-openapi/analysis v0.20.1 h1:zdVbw8yoD4SWZeq+cWdGgquaB0W4VrsJvDJHJND/Ktc=
github.com/go-openapi/analysis v0.20.1/go.mod h1:BMchjvaHDykmRMsK40iPtvyOfFdMMxlOmQr9FBZk+Og=
github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94=
github.com/go-openapi/errors v0.19.3/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94=
github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
github.com/go-openapi/errors v0.19.7/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
github.com/go-openapi/errors v0.20.1 h1:j23mMDtRxMwIobkpId7sWh7Ddcx4ivaoqUbfXx5P+a8=
github.com/go-openapi/errors v0.20.1/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=
github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg=
github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns=
github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA=
github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo=
github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs=
github.com/go-openapi/loads v0.19.3/go.mod h1:YVfqhUCdahYwR3f3iiwQLhicVRvLlU/WO5WPaZvcvSI=
github.com/go-openapi/loads v0.19.5/go.mod h1:dswLCAdonkRufe/gSUC3gN8nTSaB9uaS2es0x5/IbjY=
github.com/go-openapi/loads v0.19.6/go.mod h1:brCsvE6j8mnbmGBh103PT/QLHfbyDxA4hsKvYBNEGVc=
github.com/go-openapi/loads v0.19.7/go.mod h1:brCsvE6j8mnbmGBh103PT/QLHfbyDxA4hsKvYBNEGVc=
github.com/go-openapi/loads v0.20.0/go.mod h1:2LhKquiE513rN5xC6Aan6lYOSddlL8Mp20AW9kpviM4=
github.com/go-openapi/loads v0.20.2/go.mod h1:hTVUotJ+UonAMMZsvakEgmWKgtulweO9vYP2bQYKA/o=
github.com/go-openapi/loads v0.21.0 h1:jYtUO4wwP7psAweisP/MDoOpdzsYEESdoPcsWjHDR68=
github.com/go-openapi/loads v0.21.0/go.mod h1:rHYve9nZrQ4CJhyeIIFJINGCg1tQpx2yJrrNo8sf1ws=
github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA=
github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64=
github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4=
github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo=
github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiSjahULvYmlv98=
github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk=
github.com/go-openapi/runtime v0.21.0 h1:giZ8eT26R+/rx6RX2MkYjZPY8vPYVKDhP/mOazrQHzM=
github.com/go-openapi/runtime v0.21.0/go.mod h1:aQg+kaIQEn+A2CRSY1TxbM8+sT9g2V3aLc1FbIAnbbs=
github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=
github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY=
github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo=
github.com/go-openapi/spec v0.19.6/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk=
github.com/go-openapi/spec v0.19.8/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk=
github.com/go-openapi/spec v0.19.15/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU=
github.com/go-openapi/spec v0.20.0/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU=
github.com/go-openapi/spec v0.20.1/go.mod h1:93x7oh+d+FQsmsieroS4cmR3u0p/ywH649a3qwC9OsQ=
github.com/go-openapi/spec v0.20.3/go.mod h1:gG4F8wdEDN+YPBMVnzE85Rbhf+Th2DTvA9nFPQ5AYEg=
github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M=
github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I=
github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY=
github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU=
github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU=
github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk=
github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk=
github.com/go-openapi/strfmt v0.19.11/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc=
github.com/go-openapi/strfmt v0.20.0/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc=
github.com/go-openapi/strfmt v0.20.2/go.mod h1:43urheQI9dNtE5lTZQfuFJvjYJKPrxicATpEfZwHUNk=
github.com/go-openapi/strfmt v0.21.0 h1:hX2qEZKmYks+t0hKeb4VTJpUm2UYsdL3+DCid5swxIs=
github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg=
github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-openapi/swag v0.19.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY=
github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY=
github.com/go-openapi/swag v0.19.12/go.mod h1:eFdyEBkTdoAf/9RXBvj4cr1nH7GD8Kzo5HTt47gr72M=
github.com/go-openapi/swag v0.19.13/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng=
github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM=
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA=
github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo=
github.com/go-openapi/validate v0.19.10/go.mod h1:RKEZTUWDkxKQxN2jDT7ZnZi2bhZlbNMAuKvKB+IaGx8=
github.com/go-openapi/validate v0.19.12/go.mod h1:Rzou8hA/CBw8donlS6WNEUQupNvUZ0waH08tGe6kAQ4=
github.com/go-openapi/validate v0.19.15/go.mod h1:tbn/fdOwYHgrhPBzidZfJC2MIVvs9GA7monOmWBbeCI=
github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE9E4k54HpKcJ0=
github.com/go-openapi/validate v0.20.3 h1:GZPPhhKSZrE8HjB4eEkoYAZmoWA4+tCemSgINH1/vKw=
github.com/go-openapi/validate v0.20.3/go.mod h1:goDdqVGiigM3jChcrYJxD2joalke3ZXeftD16byIjA4=
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
@@ -571,38 +484,12 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+
github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE=
github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/go-yaml/yaml v2.1.0+incompatible h1:RYi2hDdss1u4YE7GwixGzWwVo47T8UQwnTLB6vQiq+o=
github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0=
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs=
github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk=
github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28=
github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo=
github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk=
github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw=
github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360=
github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg=
github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE=
github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8=
github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ=
github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0=
github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
github.com/goccy/go-json v0.9.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM=
github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
@@ -617,9 +504,10 @@ github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7a
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/goharbor/go-client v0.26.2 h1:pu79j/vmrsR7HF5YztHJqUU/Ki2VLJo+c4pMUvdjJmg=
github.com/goharbor/go-client v0.26.2/go.mod h1:XMWHucuHU9VTRx6U6wYwbRuyCVhE6ffJGRjaeo0nvwo=
github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-plus/errors v1.0.0 h1:9Rh4itnph6OYO7wm9u3FUTLMFMKCoL07+bLiYKELxWw=
github.com/golang-plus/errors v1.0.0/go.mod h1:YTFZjOTBcUFieeZe4q+7Umfu/sceSr3XQyBIkTkzpd8=
github.com/golang-plus/testing v1.0.0 h1:azmFWFV44LHK/j/jAkNTbzB2G2b6HdmqF358r73m8kg=
@@ -681,7 +569,6 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
@@ -716,7 +603,6 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -775,7 +661,6 @@ github.com/icholy/digest v1.1.0 h1:HfGg9Irj7i+IX1o1QAmPfIBNu/Q5A5Tu3n/MED9k9H4=
github.com/icholy/digest v1.1.0/go.mod h1:QNrsSGQ5v7v9cReDI0+eyjsXGUoRSUZQHeQ5C4XLa0Y=
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inetaf/netaddr v0.0.0-20211027220019-c74959edd3b6 h1:E9qjt3p/44HP4XfAABZhSgNZHUufBVKIm/nyPUlVpvY=
github.com/inetaf/netaddr v0.0.0-20211027220019-c74959edd3b6/go.mod h1:y3MGhcFMlh0KZPMuXXow8mpjxxAk3yoDNsp4cQz54i8=
github.com/influxdata/influxql v1.1.0 h1:sPsaumLFRPMwR5QtD3Up54HXpNND8Eu7G1vQFmi3quQ=
@@ -792,7 +677,6 @@ github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHW
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA=
@@ -814,8 +698,6 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4=
github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
github.com/karrick/godirwalk v1.17.0 h1:b4kY7nqDdioR/6qnbHQyDvmA17u5G1cZ6J+CZXwSWoI=
github.com/karrick/godirwalk v1.17.0/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk=
github.com/kdomanski/iso9660 v0.4.0 h1:BPKKdcINz3m0MdjIMwS0wx1nofsOjxOq8TOr45WGHFg=
@@ -823,8 +705,6 @@ github.com/kdomanski/iso9660 v0.4.0/go.mod h1:OxUSupHsO9ceI8lBLPJKWBTphLemjrCQY8
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
@@ -834,7 +714,6 @@ github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8t
github.com/koding/websocketproxy v0.0.0-20181220232114-7ed82d81a28c h1:N7A4JCA2G+j5fuFxCsJqjFU/sZe0mj8H0sSoSwbaikw=
github.com/koding/websocketproxy v0.0.0-20181220232114-7ed82d81a28c/go.mod h1:Nn5wlyECw3iJrzi0AhIWg+AJUb4PlRQVW4/3XHH1LZA=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
@@ -846,7 +725,6 @@ github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NB
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
@@ -879,18 +757,13 @@ github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c/go.mod h1:JKx41uQ
github.com/ma314smith/signedxml v0.0.0-20210628192057-abc5b481ae1c h1:UPJygtyk491bJJ/DnRJFuzcq9Dl9NSeFrJ7VdiRzMxc=
github.com/ma314smith/signedxml v0.0.0-20210628192057-abc5b481ae1c/go.mod h1:KEgVcb43+f5KFUH/x6Vd3NROG0AIL2CuKMrIqYsmx6E=
github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mark3labs/mcp-go v0.48.0 h1:o+MXuGW/HCeR2ny5LcAcZQn2bo6I2xaZMEHnpRG+dtw=
github.com/mark3labs/mcp-go v0.48.0/go.mod h1:JKTC7R2LLVagkEWK7Kwu7DbmA6iIvnNAod6yrHiQMag=
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
@@ -951,13 +824,6 @@ github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.4.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo=
github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=
github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU=
@@ -983,7 +849,6 @@ github.com/mogaika/udf v0.0.0-20171019171931-167f0ab01c73 h1:HpHNB68mF30LkUorpr7
github.com/mogaika/udf v0.0.0-20171019171931-167f0ab01c73/go.mod h1:OVErfG87tRGCHZpQGO8pL4vDZuY0qr4blPOTR0go6e8=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/mozillazg/go-httpheader v0.2.1 h1:geV7TrjbL8KXSyvghnFm+NyTux/hxwueTSrwhe88TQQ=
github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60=
@@ -1010,8 +875,6 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
@@ -1058,9 +921,6 @@ github.com/openzipkin/zipkin-go v0.4.1 h1:kNd/ST2yLLWhaWrkgchya40TJabe8Hioj9udfP
github.com/openzipkin/zipkin-go v0.4.1/go.mod h1:qY0VqDSN1pOBN94dBc6w2GJlWLiovAyg7Qt6/I9HecM=
github.com/oracle/oci-go-sdk v24.3.0+incompatible h1:x4mcfb4agelf1O4/1/auGlZ1lr97jXRSSN5MxTgG/zU=
github.com/oracle/oci-go-sdk v24.3.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888=
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo=
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
github.com/petermattis/goid v0.0.0-20250904145737-900bdf8bb490 h1:QTvNkZ5ylY0PGgA+Lih+GdboMLY/G9SEGLMEGVjTVA4=
github.com/petermattis/goid v0.0.0-20250904145737-900bdf8bb490/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
@@ -1171,8 +1031,6 @@ github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0ua
github.com/protolambda/ctxlock v0.1.0 h1:rCUY3+vRdcdZXqT07iXgyr744J2DU2LCBIXowYAjBCE=
github.com/protolambda/ctxlock v0.1.0/go.mod h1:vefhX6rIZH8rsg5ZpOJfEDYQOppZi19SfPiGOFrNnwM=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/regclient/regclient v0.4.8 h1:h4uZRR4OT4oO+50qWu4bj+rzqRs/JwD3erb6lHIkYK4=
github.com/regclient/regclient v0.4.8/go.mod h1:UC6i29I09h9KHyABGLGvsvGi7KYRY8ZKLyt7fzvW4oE=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
@@ -1185,8 +1043,6 @@ github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
@@ -1219,7 +1075,6 @@ github.com/shirou/gopsutil/v3 v3.22.10 h1:4KMHdfBRYXGF9skjDWiL4RA2N+E8dRdodU/bOZ
github.com/shirou/gopsutil/v3 v3.22.10/go.mod h1:QNza6r4YQoydyCfo6rH0blGfKahgibh4dQmV5xdFkQk=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
@@ -1245,7 +1100,6 @@ github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
@@ -1253,7 +1107,6 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
@@ -1284,9 +1137,6 @@ github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e h1:
github.com/texttheater/golang-levenshtein v0.0.0-20180516184445-d188e65d659e/go.mod h1:XDKHRm5ThF8YJjx001LtgelzsoaEcvnA7lVWz9EeX3g=
github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg=
github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY=
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
github.com/tinylib/msgp v1.1.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
@@ -1307,7 +1157,6 @@ github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLY
github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
github.com/vishvananda/netlink v1.2.1-beta.2 h1:Llsql0lnQEbHj0I1OuKyp8otXp0r3q0mPkuhwHfStVs=
github.com/vishvananda/netlink v1.2.1-beta.2/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho=
@@ -1325,11 +1174,6 @@ github.com/volcengine/volc-sdk-golang v1.0.23 h1:anOslb2Qp6ywnsbyq9jqR0ljuO63kg9
github.com/volcengine/volc-sdk-golang v1.0.23/go.mod h1:AfG/PZRUkHJ9inETvbjNifTDgut25Wbkm2QoYBTbvyU=
github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
github.com/xuri/efp v0.0.0-20220603152613-6918739fd470 h1:6932x8ltq1w4utjmfMPVj09jdMlkY0aiA6+Skbtl3/c=
github.com/xuri/efp v0.0.0-20220603152613-6918739fd470/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
github.com/xuri/excelize/v2 v2.7.1 h1:gm8q0UCAyaTt3MEF5wWMjVdmthm2EHAWesGSKS9tdVI=
@@ -1338,7 +1182,6 @@ github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22 h1:OAmKAfT06//esDdpi/DZ8Q
github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zIM+UJPGz4=
github.com/yosida95/uritemplate/v3 v3.0.2/go.mod h1:ILOh0sOhIJR3+L/8afwt/kE++YT040gmv5BQTMR2HP4=
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -1364,17 +1207,6 @@ go.etcd.io/etcd/client/pkg/v3 v3.5.7 h1:y3kf5Gbp4e4q7egZdn5T7W9TSHUvkClN6u+Rq9mE
go.etcd.io/etcd/client/pkg/v3 v3.5.7/go.mod h1:o0Abi1MK86iad3YrWhgUsbGx1pmTS+hrORWc2CamuhY=
go.etcd.io/etcd/client/v3 v3.5.7 h1:u/OhpiuCgYY8awOHlhIhmGIGpxfBU/GZBUP3m/3/Iz4=
go.etcd.io/etcd/client/v3 v3.5.7/go.mod h1:sOWmj9DZUMyAngS7QQwCyAXXAL6WhgTOPLNS/NabQgw=
go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE=
go.mongodb.org/mongo-driver v1.3.4/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE=
go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc=
go.mongodb.org/mongo-driver v1.4.4/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc=
go.mongodb.org/mongo-driver v1.4.6/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc=
go.mongodb.org/mongo-driver v1.5.1/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw=
go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg=
go.mongodb.org/mongo-driver v1.7.5 h1:ny3p0reEpgsR2cfA5cjgwFZg3Cv/ofFh/8jbhGtz9VI=
go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng=
go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
@@ -1413,24 +1245,20 @@ go4.org/unsafe/assume-no-moving-gc v0.0.0-20220617031537-928513b29760/go.mod h1:
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220516162934-403b01795ae8/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
@@ -1482,14 +1310,12 @@ golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190419010253-1f3472d942ba/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -1500,7 +1326,6 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -1514,7 +1339,6 @@ golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
@@ -1523,12 +1347,10 @@ golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwY
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201201195509-5d6afe98e0b7/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
@@ -1561,7 +1383,6 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1583,20 +1404,15 @@ golang.org/x/sys v0.0.0-20190116161447-11f53e031339/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190418153312-f0ce4c0180be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606122018-79a91cf218c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1640,7 +1456,6 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1655,7 +1470,6 @@ golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220608164250-635b8c9b7f68/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1684,8 +1498,6 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
@@ -1705,22 +1517,15 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
@@ -1909,7 +1714,6 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
@@ -1973,30 +1777,28 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20260916101519-866f1e3144cf h1:weQS1w9PxBeOgQFhXDkhc9UUsvpY/6AWXkk6d3Pc9fk=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20260916101519-866f1e3144cf/go.mod h1:IwmeqVkld+4XylS80cyVBXyN8fJ5ynAspd/6tcvqJuc=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20260904120449-8aa2a5d6ba7a h1:XlmHEv2UN01+eVQqv+yO3y2yEq7QpkcQbMFu4p7h7FU=
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20260904120449-8aa2a5d6ba7a/go.mod h1:FLNUcF+R7ep5AmH7cVHRw1xFfxEKahDzyDRWcV3naOc=
yunion.io/x/executor v0.0.0-20260312022053-f538abd2b005 h1:3sWwcjGXGjG9mLBWa7AyLq+QSi0udTAx21pfVQRFMBE=
yunion.io/x/executor v0.0.0-20260312022053-f538abd2b005/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws=
yunion.io/x/jsonutils v0.0.0-20220106020632-953b71a4c3a8/go.mod h1:p0nyMqGA/apTxxyLIU/o1k4V7Vujl2O6ey30L594sYE=
yunion.io/x/jsonutils v1.0.1-0.20260917025845-3108cd9a32ea h1:lB7Kwanf7REFaA19YmDc7p0HVkssVRoNQejMlqtpecw=
yunion.io/x/jsonutils v1.0.1-0.20260917025845-3108cd9a32ea/go.mod h1:8ctyIiHT+Af1Ldr0xhvZZvuf+kyghlBUuvTy6pOKwbo=
yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634=
yunion.io/x/jsonutils v1.0.1-0.20260916031541-8e0c8de6eb2e h1:0M7SVtySPc+zyHm4BqJ5XZQx2dDL2fwHccR/QZrbUMg=
yunion.io/x/jsonutils v1.0.1-0.20260916031541-8e0c8de6eb2e/go.mod h1:VK4Z93dgiKgAijcSqbMKmGaBMJuHulR16Hz4K015ZPo=
yunion.io/x/log v0.0.0-20190514041436-04ce53b17c6b/go.mod h1:+gauLs73omeJAPlsXcevLsJLKixV+sR/E7WSYTSx1fE=
yunion.io/x/log v0.0.0-20190629062853-9f6483a7103d/go.mod h1:LC6f/4FozL0iaAbnFt2eDX9jlsyo3WiOUPm03d7+U4U=
yunion.io/x/log v1.0.0/go.mod h1:LC6f/4FozL0iaAbnFt2eDX9jlsyo3WiOUPm03d7+U4U=
yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91 h1:inY5o3LDa/zgsIZuPN0HmpzKIsu/lLgsBmMttuDPGj4=
yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91/go.mod h1:LC6f/4FozL0iaAbnFt2eDX9jlsyo3WiOUPm03d7+U4U=
yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900 h1:Hu/4ERvoWaN6aiFs4h4/yvVBMeVzb3eDaYTxkVx9Kdo=
yunion.io/x/ovsdb v0.0.0-20230306173834-f164f413a900/go.mod h1:0vLkNEhlmA64HViPBAnSTUMrx5QP1CLsxXmxDKQ80tc=
yunion.io/x/pkg v0.0.0-20190620104149-945c25821dbf/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v0.0.0-20190628082551-f4033ba2ea30/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v0.0.0-20200814072949-4f1b541857d6/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E=
yunion.io/x/pkg v1.10.4-0.20260916163305-b7743fa5e758/go.mod h1:Crp6aUYB+Yq16DFjZPHhHq7ha5HL2DfyPvzCo2LJ+LU=
yunion.io/x/pkg v1.10.4-0.20260918012554-27cd9d2e093b h1:XUJLpD48685DE8hwxEC+ms1F4T6/g2KKAfGuVn8rZeo=
yunion.io/x/pkg v1.10.4-0.20260918012554-27cd9d2e093b/go.mod h1:S8ITTpENaL3qSXi8Y4L6wVbVlP8XZ5BvABO10DFqF7M=
yunion.io/x/pkg v1.10.4-0.20260722094907-0da70a14584f h1:eRWHOwgnEK4dMoq7TQ61qZxly3LF0s7tH6nlcahvZiA=
yunion.io/x/pkg v1.10.4-0.20260722094907-0da70a14584f/go.mod h1:0Bwxqd9MA3ACi119/l02FprY/o9gHahmYC2bsSbnVpM=
yunion.io/x/s3cli v0.0.0-20241221171442-1c11599d28e1 h1:1KJ3YYinydPHpDEQRXdr/T8SYcKZ5Er+m489H+PnaQ4=
yunion.io/x/s3cli v0.0.0-20241221171442-1c11599d28e1/go.mod h1:0iFKpOs1y4lbCxeOmq3Xx/0AcQoewVPwj62eRluioEo=
yunion.io/x/sqlchemy v1.1.3-0.20260917035232-d682485b3a12 h1:xU8Z/Zg+zc199Y58eB3fA8mvOHsA28UCDfd7OuK3QKA=
yunion.io/x/sqlchemy v1.1.3-0.20260917035232-d682485b3a12/go.mod h1:RNiIM7ZFF7VFrk18DbwAa8PYR00YP7Y23XjqKIlfr3I=
yunion.io/x/structarg v0.0.0-20260917033311-96c7653334ac h1:hJAthswj6YfWd3GCOBl9eM7mv0+4EUmjnD0b9jdBYi0=
yunion.io/x/structarg v0.0.0-20260917033311-96c7653334ac/go.mod h1:DyMCdRyfV5PdEe/BDz2vBbemnmALUF3Rj1JmUUlu3KY=
yunion.io/x/sqlchemy v1.1.3-0.20260807102031-1d7e260d0dcc h1:di0CJ1Fu/aeY0Lfvr52sQx8VTOm0JyZXJz0aC+7p6No=
yunion.io/x/sqlchemy v1.1.3-0.20260807102031-1d7e260d0dcc/go.mod h1:vCIZpqhZ5Jzaq3tFyrti/vv8BijQKtkzSgNT/uH4H5A=
yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c h1:QuLab2kSRECZRxo4Lo2KcYn6XjQFDGaZ1+x0pYDVVwQ=
yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c/go.mod h1:EP6NSv2C0zzqBDTKumv8hPWLb3XvgMZDHQRfyuOrQng=
zombiezen.com/go/sqlite v0.13.1 h1:qDzxyWWmMtSSEH5qxamqBFmqA2BLSSbtODi3ojaE02o=
zombiezen.com/go/sqlite v0.13.1/go.mod h1:Ht/5Rg3Ae2hoyh1I7gbWtWAl89CNocfqeb/aAMTkJr4=

View File

@@ -23,7 +23,6 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/pkg/errors"
"yunion.io/x/pkg/tristate"
"yunion.io/x/sqlchemy"
"yunion.io/x/onecloud/pkg/ansibleserver/options"
@@ -44,7 +43,6 @@ import (
type SAnsiblePlaybook struct {
db.SVirtualResourceBase
db.SEnabledResourceBase `enabled->default:"" enabled->nullable:"true"`
Playbook *ansible.Playbook `length:"text" nullable:"false" create:"required" get:"user" update:"user"`
Output string `length:"medium" get:"user"`
@@ -54,7 +52,6 @@ type SAnsiblePlaybook struct {
type SAnsiblePlaybookManager struct {
db.SVirtualResourceBaseManager
db.SEnabledResourceBaseManager
sessions ansible.SessionManager
sessionsMux *sync.Mutex
@@ -76,41 +73,6 @@ func init() {
AnsiblePlaybookManager.SetVirtualObject(AnsiblePlaybookManager)
}
// requireSystemAdmin is required to enable a playbook.
func requireSystemAdmin(userCred mcclient.TokenCredential) error {
if userCred == nil || !userCred.HasSystemAdminPrivilege() {
return httperrors.NewForbiddenError("enabling ansible playbook requires system admin privilege")
}
return nil
}
// applyPlaybookEnabledByCred sets enabled on create/update: system admin
// defaults to enabled, others are always disabled.
func applyPlaybookEnabledByCred(userCred mcclient.TokenCredential, data *jsonutils.JSONDict) {
if userCred != nil && userCred.HasSystemAdminPrivilege() {
if !data.Contains("enabled") {
data.Set("enabled", jsonutils.JSONTrue)
}
return
}
data.Set("enabled", jsonutils.JSONFalse)
}
func ensurePlaybookEnabled(enabled bool) error {
if !enabled {
return httperrors.NewForbiddenError("playbook is not enabled")
}
return nil
}
func (man *SAnsiblePlaybookManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.AnsiblePlaybookListInput) (*sqlchemy.SQuery, error) {
q, err := man.SVirtualResourceBaseManager.ListItemFilter(ctx, q, userCred, query.VirtualResourceListInput)
if err != nil {
return nil, err
}
return man.SEnabledResourceBaseManager.ListItemFilter(ctx, q, userCred, query.EnabledResourceBaseListInput)
}
func (man *SAnsiblePlaybookManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) {
pbV := NewAnsiblePlaybookValidator("playbook", userCred)
if err := pbV.Validate(ctx, data); err != nil {
@@ -128,15 +90,11 @@ func (man *SAnsiblePlaybookManager) ValidateCreateData(ctx context.Context, user
return nil, err
}
data.Update(jsonutils.Marshal(input))
applyPlaybookEnabledByCred(userCred, data)
return data, nil
}
func (apb *SAnsiblePlaybook) PostCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) {
apb.SVirtualResourceBase.PostCreate(ctx, userCred, ownerId, query, data)
if !apb.GetEnabled() {
return
}
err := apb.runPlaybook(ctx, userCred)
if err != nil {
log.Errorf("postCreate: runPlaybook: %v", err)
@@ -160,28 +118,6 @@ func (man *SAnsiblePlaybookManager) InitializeData() error {
log.Errorf("set playbook %s(%s) to unknown state: %v", pb.Name, pb.Id, err)
}
}
if err := man.eanbleExistingPlaybooks(); err != nil {
return errors.Wrap(err, "enable existing playbooks")
}
return nil
}
func (man *SAnsiblePlaybookManager) eanbleExistingPlaybooks() error {
pbs := []SAnsiblePlaybookV2{}
q := AnsiblePlaybookV2Manager.Query().IsNull("enabled")
if err := db.FetchModelObjects(AnsiblePlaybookV2Manager, q, &pbs); err != nil {
return errors.Wrap(err, "fetch running playbooks")
}
for i := 0; i < len(pbs); i++ {
pb := &pbs[i]
_, err := db.Update(pb, func() error {
pb.Enabled = tristate.True
return nil
})
if err != nil {
log.Errorf("enable playbook %s(%s): %v", pb.Name, pb.Id, err)
}
}
return nil
}
@@ -206,44 +142,17 @@ func (apb *SAnsiblePlaybook) ValidateUpdateData(ctx context.Context, userCred mc
}
apb.Playbook = pbV.Playbook // Update as a whole
data.Set("status", jsonutils.NewString(api.AnsiblePlaybookStatusInit))
applyPlaybookEnabledByCred(userCred, data)
if enabled, err := data.Bool("enabled"); err == nil {
apb.SetEnabled(enabled)
}
return data, nil
}
func (apb *SAnsiblePlaybook) PostUpdate(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) {
apb.SVirtualResourceBase.PostUpdate(ctx, userCred, query, data)
if !apb.GetEnabled() {
return
}
err := apb.runPlaybook(ctx, userCred)
if err != nil {
log.Errorf("postUpdate: runPlaybook: %v", err)
}
}
func (apb *SAnsiblePlaybook) PerformEnable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformEnableInput) (jsonutils.JSONObject, error) {
if err := requireSystemAdmin(userCred); err != nil {
return nil, err
}
if err := ansible.ValidatePlaybook(apb.Playbook); err != nil {
return nil, httperrors.NewInputParameterError("%s", err.Error())
}
if err := db.EnabledPerformEnable(apb, ctx, userCred, true); err != nil {
return nil, err
}
return nil, nil
}
func (apb *SAnsiblePlaybook) PerformDisable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformDisableInput) (jsonutils.JSONObject, error) {
if err := db.EnabledPerformEnable(apb, ctx, userCred, false); err != nil {
return nil, err
}
return nil, nil
}
func (apb *SAnsiblePlaybook) PerformRun(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
err := apb.runPlaybook(ctx, userCred)
if err != nil {
@@ -267,15 +176,9 @@ func (apb *SAnsiblePlaybook) runPlaybook(ctx context.Context, userCred mcclient.
if man.sessions.Has(apb.Id) {
return fmt.Errorf("playbook is already running")
}
if err := ensurePlaybookEnabled(apb.GetEnabled()); err != nil {
return err
}
// init private key
pb := apb.Playbook.Copy()
if err := ansible.ValidatePlaybook(pb); err != nil {
return err
}
if len(pb.PrivateKey) == 0 {
if k, err := compute.Sshkeypairs.FetchPrivateKey(ctx, userCred); err != nil {
return err

View File

@@ -1,80 +0,0 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or authorized to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package models
import (
"testing"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
)
func TestRequireSystemAdmin(t *testing.T) {
systemAdmin := &mcclient.SSimpleToken{User: "admin", Project: "system", Roles: "admin"}
if err := requireSystemAdmin(systemAdmin); err != nil {
t.Fatalf("system admin should pass: %v", err)
}
tenant := &mcclient.SSimpleToken{User: "user1", Project: "proj1", Roles: "user"}
if err := requireSystemAdmin(tenant); err == nil {
t.Fatal("tenant should be forbidden")
}
projectAdmin := &mcclient.SSimpleToken{User: "owner", Project: "proj1", Roles: "admin"}
if err := requireSystemAdmin(projectAdmin); err == nil {
t.Fatal("project admin (non-system project) should be forbidden")
}
if err := requireSystemAdmin(nil); err == nil {
t.Fatal("nil credential should be forbidden")
}
}
func TestApplyPlaybookEnabledByCred(t *testing.T) {
admin := &mcclient.SSimpleToken{User: "admin", Project: "system", Roles: "admin"}
tenant := &mcclient.SSimpleToken{User: "user1", Project: "proj1", Roles: "user"}
data := jsonutils.NewDict()
applyPlaybookEnabledByCred(admin, data)
enabled, _ := data.Bool("enabled")
if !enabled {
t.Fatal("admin create should default enabled")
}
data = jsonutils.NewDict()
data.Set("enabled", jsonutils.JSONFalse)
applyPlaybookEnabledByCred(admin, data)
enabled, _ = data.Bool("enabled")
if enabled {
t.Fatal("admin should be able to create disabled")
}
data = jsonutils.NewDict()
data.Set("enabled", jsonutils.JSONTrue)
applyPlaybookEnabledByCred(tenant, data)
enabled, _ = data.Bool("enabled")
if enabled {
t.Fatal("non-admin create must be disabled")
}
}
func TestEnsurePlaybookEnabled(t *testing.T) {
if err := ensurePlaybookEnabled(true); err != nil {
t.Fatalf("enabled: %v", err)
}
if err := ensurePlaybookEnabled(false); err == nil {
t.Fatal("disabled playbook should not run")
}
}

View File

@@ -24,7 +24,6 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/pkg/errors"
"yunion.io/x/pkg/tristate"
"yunion.io/x/sqlchemy"
"yunion.io/x/onecloud/pkg/ansibleserver/options"
@@ -41,7 +40,6 @@ import (
// This is at the moment for internal use only. Update is not allowed
type SAnsiblePlaybookV2 struct {
db.SVirtualResourceBase
db.SEnabledResourceBase `enabled->default:"" enabled->nullable:"true"`
Playbook string `length:"text" nullable:"false" create:"required" get:"user"`
Inventory string `length:"text" nullable:"false" create:"required" get:"user"`
@@ -56,7 +54,6 @@ type SAnsiblePlaybookV2 struct {
type SAnsiblePlaybookV2Manager struct {
db.SVirtualResourceBaseManager
db.SEnabledResourceBaseManager
sessions ansible.SessionManager
sessionsMux *sync.Mutex
@@ -78,14 +75,6 @@ func init() {
AnsiblePlaybookV2Manager.SetVirtualObject(AnsiblePlaybookV2Manager)
}
func (man *SAnsiblePlaybookV2Manager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query api.AnsiblePlaybookListInput) (*sqlchemy.SQuery, error) {
q, err := man.SVirtualResourceBaseManager.ListItemFilter(ctx, q, userCred, query.VirtualResourceListInput)
if err != nil {
return nil, err
}
return man.SEnabledResourceBaseManager.ListItemFilter(ctx, q, userCred, query.EnabledResourceBaseListInput)
}
func (man *SAnsiblePlaybookV2Manager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) {
data.Set("status", jsonutils.NewString(api.AnsiblePlaybookStatusInit))
input := apis.VirtualResourceCreateInput{}
@@ -98,42 +87,11 @@ func (man *SAnsiblePlaybookV2Manager) ValidateCreateData(ctx context.Context, us
return nil, err
}
data.Update(jsonutils.Marshal(input))
if err := validateAnsiblePlaybookV2Input(userCred, data); err != nil {
return nil, err
}
applyPlaybookEnabledByCred(userCred, data)
return data, nil
}
func validateAnsiblePlaybookV2Input(userCred mcclient.TokenCredential, data *jsonutils.JSONDict) error {
playbook, _ := data.GetString("playbook")
inventory, _ := data.GetString("inventory")
files, _ := data.GetString("files")
requirements, _ := data.GetString("requirements")
return validateAnsiblePlaybookV2Fields(userCred, playbook, inventory, files, requirements)
}
func validateAnsiblePlaybookV2Fields(userCred mcclient.TokenCredential, playbook, inventory, files, requirements string) error {
if err := ansible.ValidatePlaybookYAML(playbook); err != nil {
return httperrors.NewInputParameterError("%s", err.Error())
}
if err := ansible.ValidateInventoryYAML(inventory); err != nil {
return httperrors.NewInputParameterError("%s", err.Error())
}
if err := ansible.ValidateFilesJSON(files); err != nil {
return httperrors.NewInputParameterError("%s", err.Error())
}
if strings.TrimSpace(requirements) != "" && (userCred == nil || !userCred.HasSystemAdminPrivilege()) {
return httperrors.NewForbiddenError("requirements is not allowed")
}
return nil
}
func (apb *SAnsiblePlaybookV2) PostCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) {
apb.SVirtualResourceBase.PostCreate(ctx, userCred, ownerId, query, data)
if !apb.GetEnabled() {
return
}
err := apb.runPlaybook(ctx, userCred)
if err != nil {
log.Errorf("postCreate: runPlaybook: %v", err)
@@ -157,28 +115,6 @@ func (man *SAnsiblePlaybookV2Manager) InitializeData() error {
log.Errorf("set playbook %s(%s) to unknown state: %v", pb.Name, pb.Id, err)
}
}
if err := man.eanbleExistingPlaybooks(); err != nil {
return errors.Wrap(err, "enable existing playbooks")
}
return nil
}
func (man *SAnsiblePlaybookV2Manager) eanbleExistingPlaybooks() error {
pbs := []SAnsiblePlaybookV2{}
q := AnsiblePlaybookV2Manager.Query().IsNull("enabled")
if err := db.FetchModelObjects(AnsiblePlaybookV2Manager, q, &pbs); err != nil {
return errors.Wrap(err, "fetch running playbooks")
}
for i := 0; i < len(pbs); i++ {
pb := &pbs[i]
_, err := db.Update(pb, func() error {
pb.Enabled = tristate.True
return nil
})
if err != nil {
log.Errorf("enable playbook %s(%s): %v", pb.Name, pb.Id, err)
}
}
return nil
}
@@ -189,26 +125,6 @@ func (apb *SAnsiblePlaybookV2) ValidateDeleteCondition(ctx context.Context, info
return nil
}
func (apb *SAnsiblePlaybookV2) PerformEnable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformEnableInput) (jsonutils.JSONObject, error) {
if err := requireSystemAdmin(userCred); err != nil {
return nil, err
}
if err := validateAnsiblePlaybookV2Fields(userCred, apb.Playbook, apb.Inventory, apb.Files, apb.Requirements); err != nil {
return nil, err
}
if err := db.EnabledPerformEnable(apb, ctx, userCred, true); err != nil {
return nil, err
}
return nil, nil
}
func (apb *SAnsiblePlaybookV2) PerformDisable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformDisableInput) (jsonutils.JSONObject, error) {
if err := db.EnabledPerformEnable(apb, ctx, userCred, false); err != nil {
return nil, err
}
return nil, nil
}
func (apb *SAnsiblePlaybookV2) PerformRun(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
err := apb.runPlaybook(ctx, userCred)
if err != nil {
@@ -232,21 +148,6 @@ func (apb *SAnsiblePlaybookV2) runPlaybook(ctx context.Context, userCred mcclien
if man.sessions.Has(apb.Id) {
return fmt.Errorf("playbook is already running")
}
if err := ensurePlaybookEnabled(apb.GetEnabled()); err != nil {
return err
}
if err := ansible.ValidatePlaybookYAML(apb.Playbook); err != nil {
return err
}
if err := ansible.ValidateInventoryYAML(apb.Inventory); err != nil {
return err
}
if err := ansible.ValidateFilesJSON(apb.Files); err != nil {
return err
}
if strings.TrimSpace(apb.Requirements) != "" && !userCred.HasSystemAdminPrivilege() {
return httperrors.NewForbiddenError("requirements is not allowed")
}
// hack: force Sleep 50s to wait some host ssh service started
// time.Sleep(50 * time.Second)

View File

@@ -87,9 +87,6 @@ func (v *ValidatorAnsiblePlaybook) Validate(ctx context.Context, data *jsonutils
}
}
}
if err := ansible.ValidatePlaybook(pb); err != nil {
return httperrors.NewInputParameterError("%s", err.Error())
}
// add LF for privateKey
if len(pb.PrivateKey) > 0 && pb.PrivateKey[len(pb.PrivateKey)-1] != 10 {
pb.PrivateKey = append(pb.PrivateKey, 10)

View File

@@ -24,13 +24,8 @@ import (
type AnsiblePlaybookCreateInput struct {
apis.Meta
Name string `json:"name"`
Playbook ansible.Playbook `json:"playbook"`
}
type AnsiblePlaybookListInput struct {
apis.VirtualResourceListInput
apis.EnabledResourceBaseListInput
Name string
Playbook ansible.Playbook
}
type AnsiblePlaybookUpdateInput AnsiblePlaybookCreateInput
@@ -55,19 +50,19 @@ type AnsiblePlaybookReferenceUpdateInput struct {
}
type AnsiblePlaybookReferenceRunInput struct {
Host AnsibleHost `json:"host"`
Args jsonutils.JSONObject `json:"args"`
Host AnsibleHost
Args jsonutils.JSONObject
}
type AnsiblePlaybookReferenceRunOutput struct {
AnsiblePlaybookInstanceId string `json:"ansible_playbook_instance_id"`
AnsiblePlaybookInstanceId string
}
type AnsiblePlaybookReferenceStopInput struct {
AnsiblePlaybookInstanceId string `json:"ansible_playbook_instance_id"`
AnsiblePlaybookInstanceId string
}
type AnsiblePlaybookInstanceListInput struct {
apis.StatusStandaloneResourceListInput
AnsiblePlayboookReferenceId string `json:"ansible_playboook_reference_id"`
AnsiblePlayboookReferenceId string
}

View File

@@ -61,6 +61,6 @@ type ProxySettingResourceInput struct {
}
type ProxySettingTestInput struct {
HttpProxy string `json:"http_proxy"`
HttpsProxy string `json:"https_proxy"`
HttpProxy string
HttpsProxy string
}

View File

@@ -24,9 +24,9 @@ import (
)
type ProxySetting struct {
HttpProxy string `json:"http_proxy"`
HttpsProxy string `json:"https_proxy"`
NoProxy string `json:"no_proxy"`
HttpProxy string
HttpsProxy string
NoProxy string
}
func (v *ProxySetting) Sanitize() error {

View File

@@ -16,12 +16,12 @@ package cloudid
type CloudaccountResourceListInput struct {
// 根据云账号名称过滤资源
// swagger:ignore
Cloudaccount string `json:"cloudaccount" yunion-deprecated-by:"cloudaccount_id"`
// 根据平台过滤
Provider []string `json:"provider"`
// swagger:ignore
CloudaccountId string `json:"cloudaccount_id"`
}

View File

@@ -99,7 +99,7 @@ type CloudgroupCreateInput struct {
// 子账号Id
ManagerId string `json:"manager_id"`
// swagger:ignore
// swagger: ignore
CloudaccountId string `json:"cloudaccount_id"`
// 权限Id列表, 权限provider必须和权限组provider一致
@@ -166,19 +166,19 @@ type CloudgroupResourceDetails struct {
}
type SPolicy struct {
Name string `json:"name"`
ExternalId string `json:"external_id"`
PolicyType string `json:"policy_type"`
Name string
ExternalId string
PolicyType string
}
type GroupUser struct {
Name string `json:"name"`
ExternalId string `json:"external_id"`
Name string
ExternalId string
}
type SGroup struct {
Id string `json:"id"`
Name string `json:"name"`
Id string
Name string
}
type GetCloudaccountSamlOutput struct {

View File

@@ -55,8 +55,8 @@ type CloudpolicyListInput struct {
}
type PolicyUsage struct {
CloudgroupCount int `json:"cloudgroup_count"`
ClouduserCount int `json:"clouduser_count"`
CloudgroupCount int
ClouduserCount int
}
type CloudpolicyDetails struct {

View File

@@ -39,9 +39,9 @@ type SamluserDetails struct {
CloudgroupResourceDetails
CloudaccountResourceDetails
CloudaccountId string `json:"cloudaccount_id"`
ManagerId string `json:"manager_id"`
Manager string `json:"manager"`
CloudaccountId string
ManagerId string
Manager string
SSamluser
}

View File

@@ -1,3 +1,17 @@
// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//go:build !ignore_autogenerated
// +build !ignore_autogenerated

View File

@@ -23,58 +23,58 @@ import (
type ForwardCreateInput struct {
apis.VirtualResourceCreateInput
ProxyEndpointId string `json:"proxy_endpoint_id"`
ProxyAgentId string `json:"proxy_agent_id"`
Type string `json:"type"`
BindPortReq int `json:"bind_port_req,omitzero"`
RemoteAddr string `json:"remote_addr"`
RemotePort string `json:"remote_port"`
ProxyEndpointId string
ProxyAgentId string
Type string
BindPortReq int `json:",omitzero"`
RemoteAddr string
RemotePort string
LastSeenTimeout int `json:"last_seen_timeout,omitzero"`
LastSeenTimeout int `json:",omitzero"`
Opaque string `json:"opaque"`
Opaque string
}
type ForwardCreateFromServerInput struct {
ServerId string `json:"server_id"`
ServerId string
Type string `json:"type"`
BindPortReq int `json:"bind_port_req,omitzero"`
RemotePort int `json:"remote_port,omitzero"`
Type string
BindPortReq int `json:",omitzero"`
RemotePort int `json:",omitzero"`
LastSeenTimeout int `json:"last_seen_timeout,omitzero"`
LastSeenTimeout int `json:",omitzero"`
}
type ForwardHeartbeatInput struct{}
type ForwardListInput struct {
ProxyAgentId string `json:"proxy_agent_id"`
ProxyEndpointId string `json:"proxy_endpoint_id"`
ProxyAgentId string
ProxyEndpointId string
Type string `json:"type"`
RemoteAddr string `json:"remote_addr"`
RemotePort *int `json:"remote_port"`
BindPortReq *int `json:"bind_port_req"`
Type string
RemoteAddr string
RemotePort *int
BindPortReq *int
Opaque string `json:"opaque"`
Opaque string
}
type ForwardDetails struct {
ProxyEndpoint string `json:"proxy_endpoint"`
ProxyEndpointId string `json:"proxy_endpoint_id"`
ProxyAgent string `json:"proxy_agent"`
ProxyAgentId string `json:"proxy_agent_id"`
ProxyEndpoint string
ProxyEndpointId string
ProxyAgent string
ProxyAgentId string
Type string `json:"type"`
BindPortReq int `json:"bind_port_req"`
BindPort int `json:"bind_port"`
RemoteAddr string `json:"remote_addr"`
RemotePort int `json:"remote_port"`
Type string
BindPortReq int
BindPort int
RemoteAddr string
RemotePort int
LastSeen time.Time `json:"last_seen"`
LastSeenTimeout int `json:"last_seen_timeout"`
LastSeen time.Time
LastSeenTimeout int
Opaque string `json:"opaque"`
Opaque string
BindAddr string `json:"bind_addr"`
BindAddr string
}

View File

@@ -21,19 +21,19 @@ import (
type ProxyEndpointCreateInput struct {
apis.VirtualResourceCreateInput
User string `json:"user"`
Host string `json:"host"`
Port int `json:"port,omitzero"`
PrivateKey string `json:"private_key"`
User string
Host string
Port int `json:",omitzero"`
PrivateKey string
IntranetIpAddr string `json:"intranet_ip_addr"`
IntranetIpAddr string
}
type ProxyEndpointCreateFromServerInput struct {
Name string `json:"name"`
GenerateName string `json:"generate_name"`
Name string
GenerateName string
ServerId string `json:"server_id"`
ServerId string
}
type ProxyEndpointUpdateInput struct {
@@ -48,6 +48,6 @@ type ProxyEndpointUpdateInput struct {
type ProxyEndpointListInput struct {
apis.VirtualResourceListInput
VpcId string `json:"vpc_id"`
NetworkId string `json:"network_id"`
VpcId string
NetworkId string
}

View File

@@ -31,18 +31,18 @@ type AccessGroupRuleDetails struct {
type AccessGroupRuleCreateInput struct {
apis.ResourceBaseCreateInput
Priority int `json:"priority"`
Source string `json:"source"`
RWAccessType string `json:"rw_access_type"`
UserAccessType string `json:"user_access_type"`
Description string `json:"description"`
AccessGroupId string `json:"access_group_id"`
Priority int
Source string
RWAccessType string
UserAccessType string
Description string
AccessGroupId string
}
type AccessGroupRuleUpdateInput struct {
Priority *int `json:"priority"`
Source string `json:"source"`
RWAccessType string `json:"rw_access_type"`
UserAccessType string `json:"user_access_type"`
Description string `json:"description"`
Priority *int
Source string
RWAccessType string
UserAccessType string
Description string
}

View File

@@ -26,7 +26,7 @@ import (
type SchedtagConfig struct {
apis.Meta
// swagger:ignore
// swagger: ignore
Id string `json:"id"`
// 调度策略
// required: 必须使用
@@ -35,7 +35,7 @@ type SchedtagConfig struct {
// exclude: 禁止使用
// enmu: required, prefer, avoid, exclude
Strategy string `json:"strategy"`
// swagger:ignore
// swagger: ignore
Weight int `json:"weight"`
// 资源类型
// hosts: 宿主机
@@ -413,7 +413,7 @@ type ServerConfigs struct {
// default: kvm
Hypervisor string `json:"hypervisor"`
// swagger:ignore
// swagger: ignore
Provider string `json:"provider"`
// 包年包月资源池
@@ -522,7 +522,7 @@ type KickstartConfig struct {
ConfigURL string `json:"config_url,omitempty"`
// 操作系统类型 (用于确定内核参数和文件路径)
// enum: ["centos", "rhel", "fedora", "openeuler", "ubuntu"]
// enum: centos,rhel,fedora,openeuler,ubuntu
// required: true
OSType string `json:"os_type" validate:"required,oneof=centos rhel fedora openeuler ubuntu"`
@@ -574,7 +574,7 @@ type ServerCreateInput struct {
// required: false
UserData string `json:"user_data"`
// swagger:ignore
// swagger: ignore
// 创建测试数据,不实际创建资源
FakeCreate bool `json:"fake_create"`
@@ -784,7 +784,7 @@ func (c *KickstartConfig) IsEnabled() bool {
// ServerUpdateKickstartStatusInput 更新虚拟机 kickstart 状态的输入
type ServerUpdateKickstartStatusInput struct {
// kickstart 状态
// enum: ["kickstart_pending", "kickstart_installing", "kickstart_completed", "kickstart_failed"]
// enum: kickstart_pending,kickstart_installing,kickstart_completed,kickstart_failed
// required: true
Status string `json:"status" validate:"required,oneof=kickstart_pending kickstart_installing kickstart_completed kickstart_failed"`
@@ -829,15 +829,15 @@ type GuestBatchMigrateRequest struct {
}
type GuestBatchMigrateParams struct {
Id string `json:"id"`
LiveMigrate bool `json:"live_migrate"`
SkipCpuCheck bool `json:"skip_cpu_check"`
SkipKernelCheck bool `json:"skip_kernel_check"`
EnableTLS *bool `json:"enable_tls"`
RescueMode bool `json:"rescue_mode"`
OldStatus string `json:"old_status"`
MaxBandwidthMb *int64 `json:"max_bandwidth_mb"`
QuciklyFinish *bool `json:"quickly_finish"`
Id string
LiveMigrate bool
SkipCpuCheck bool
SkipKernelCheck bool
EnableTLS *bool
RescueMode bool
OldStatus string
MaxBandwidthMb *int64
QuciklyFinish *bool
}
type HostLoginInfo struct {

View File

@@ -42,17 +42,17 @@ type AppDetails struct {
apis.VirtualResourceDetails
ManagedResourceInfo
CloudregionResourceInfo
Network string `json:"network"`
VpcId string `json:"vpc_id"`
Vpc string `json:"vpc"`
Network string
VpcId string
Vpc string
}
type AppEnvironmentListInput struct {
apis.VirtualResourceListInput
apis.ExternalizedResourceBaseListInput
AppId string `json:"app_id"`
InstanceType string `json:"instance_type"`
AppId string
InstanceType string
}
type AppEnvironmentDetails struct {
@@ -60,54 +60,54 @@ type AppEnvironmentDetails struct {
}
type AppHybirdConnection struct {
Id string `json:"id"`
Name string `json:"name"`
Hostname string `json:"hostname"`
Namespace string `json:"namespace"`
Port int `json:"port"`
Id string
Name string
Hostname string
Namespace string
Port int
}
type AppHybirdConnectionOutput struct {
Data []AppHybirdConnection `json:"data"`
Data []AppHybirdConnection
}
type AppBackup struct {
Id string `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
Id string
Name string
Type string
}
type AppBackupOutput struct {
Data []AppBackup `json:"data"`
Data []AppBackup
BackupConfig struct {
Enabled bool `json:"enabled"`
FrequencyInterval int `json:"frequency_interval"`
FrequencyUnit string `json:"frequency_unit"`
RetentionPeriodInDays int `json:"retention_period_in_days"`
} `json:"backup_config"`
Enabled bool
FrequencyInterval int
FrequencyUnit string
RetentionPeriodInDays int
}
}
type AppCertificate struct {
Id string `json:"id"`
Name string `json:"name"`
SubjectName string `json:"subject_name"`
Issuer string `json:"issuer"`
IssueDate time.Time `json:"issue_date"`
Thumbprint string `json:"thumbprint"`
ExpireTime time.Time `json:"expire_time"`
Id string
Name string
SubjectName string
Issuer string
IssueDate time.Time
Thumbprint string
ExpireTime time.Time
}
type AppCertificateOutput struct {
Data []AppCertificate `json:"data"`
Data []AppCertificate
}
type AppDomain struct {
Id string `json:"id"`
Name string `json:"name"`
Status string `json:"status"`
SslState string `json:"ssl_state"`
Id string
Name string
Status string
SslState string
}
type AppDomainOutput struct {
Data []AppDomain `json:"data"`
Data []AppDomain
}

View File

@@ -138,17 +138,13 @@ type DiskBackupCreateInput struct {
apis.VirtualResourceCreateInput
apis.EncryptedResourceCreateInput
// swagger:ignore
SizeMb int `json:"size_mb"`
// path to find backup file, in case of create backup from a backup file
BackupFilePath string `json:"backup_file_path"`
// description: disk id
DiskId string `json:"disk_id"`
// swagger:ignore
// swagger: ignore
BackStorageId string `json:"back_storage_id" yunion-deprecated-by:"backup_storage_id"`
// description: backup storage id
BackupStorageId string `json:"backup_storage_id"`
// swagger:ignore
// swagger: ignore
CloudregionId string `json:"cloudregion_id"`
// swagger:ignore
ManagerId string `json:"manager_id"`
@@ -157,23 +153,20 @@ type DiskBackupCreateInput struct {
type DiskBackupRecoveryInput struct {
// description: name of disk
Name string `json:"name"`
Name string
}
type DiskBackupSyncstatusInput struct {
}
type DiskBackupPackMetadata struct {
OsArch string `json:"os_arch"`
SizeMb int `json:"size_mb"`
DiskSizeMb int `json:"disk_size_mb"`
DiskType string `json:"disk_type"`
OsArch string
SizeMb int
DiskSizeMb int
DiskType string
// 操作系统类型
OsType string `json:"os_type"`
DiskConfig *SBackupDiskConfig `json:"disk_config"`
// 备份文件路径
BackupFilePath string `json:"backup_file_path"`
OsType string
DiskConfig *SBackupDiskConfig
}
type DiskBackupExportInfo struct {
@@ -183,22 +176,22 @@ type DiskBackupExportInfo struct {
}
type DiskBackupImportTaskInput struct {
AccessUrl string `json:"access_url"`
AccessUrl string
}
type InstanceBackupPackMetadata struct {
OsArch string `json:"os_arch"`
ServerConfig jsonutils.JSONObject `json:"server_config"`
ServerMetadata jsonutils.JSONObject `json:"server_metadata"`
SecGroups jsonutils.JSONObject `json:"sec_groups"`
KeypairId string `json:"keypair_id"`
OsType string `json:"os_type"`
InstanceType string `json:"instance_type"`
SizeMb int `json:"size_mb"`
DiskMetadatas []DiskBackupPackMetadata `json:"disk_metadatas"`
OsArch string
ServerConfig jsonutils.JSONObject
ServerMetadata jsonutils.JSONObject
SecGroups jsonutils.JSONObject
KeypairId string
OsType string
InstanceType string
SizeMb int
DiskMetadatas []DiskBackupPackMetadata
// 加密密钥ID
EncryptKeyId string `json:"encrypt_key_id"`
EncryptKeyId string
// Instance Backup metadata
Metadata map[string]string `json:"metadata"`
}

View File

@@ -15,13 +15,13 @@
package compute
type SGMapItem struct {
SGDeviceName string `json:"sg_device_name"`
HostNumber int `json:"host_number"`
Bus int `json:"bus"`
SCSIId int `json:"scsi_id"`
Lun int `json:"lun"`
Type int `json:"type"`
LinuxDeviceName string `json:"linux_device_name"`
SGDeviceName string
HostNumber int
Bus int
SCSIId int
Lun int
Type int
LinuxDeviceName string
}
const (
@@ -30,10 +30,10 @@ const (
)
type IPMIUser struct {
Id int `json:"id"`
Name string `json:"name"`
Callin bool `json:"callin"`
LinkAuth bool `json:"link_auth"`
IPMIMsg bool `json:"ipmi_msg"`
Priv string `json:"priv"`
Id int
Name string
Callin bool
LinkAuth bool
IPMIMsg bool
Priv string
}

View File

@@ -44,21 +44,21 @@ func (input *BaremetalProfileListInput) Normalize() {
type BaremetalProfileCreateInput struct {
apis.StandaloneAnonResourceCreateInput
OemName string `json:"oem_name"`
Model string `json:"model"`
LanChannel uint8 `json:"lan_channel"`
RootId int `json:"root_id"`
RootName string `json:"root_name"`
StrongPass bool `json:"strong_pass"`
OemName string
Model string
LanChannel uint8
RootId int
RootName string
StrongPass bool
}
type BaremetalProfileUpdateInput struct {
apis.StandaloneAnonResourceBaseUpdateInput
LanChannel uint8 `json:"lan_channel"`
RootId *int `json:"root_id"`
RootName string `json:"root_name"`
StrongPass *bool `json:"strong_pass"`
LanChannel uint8
RootId *int
RootName string
StrongPass *bool
}
type BaremetalProfileDetails struct {
@@ -87,12 +87,12 @@ func (detail BaremetalProfileDetails) ToSpec() BaremetalProfileSpec {
}
type BaremetalProfileSpec struct {
OemName string `json:"oem_name"`
Model string `json:"model"`
LanChannels []uint8 `json:"lan_channels"`
RootName string `json:"root_name"`
RootId int `json:"root_id"`
StrongPass bool `json:"strong_pass"`
OemName string
Model string
LanChannels []uint8
RootName string
RootId int
StrongPass bool
}
type BaremetalProfileSpecs []BaremetalProfileSpec

View File

@@ -96,7 +96,7 @@ func (bucket BucketDetails) GetMetricPairs() map[string]string {
}
type BucketObjectsActionInput struct {
Key []string `json:"key"`
Key []string
}
type BucketAclInput struct {
@@ -220,25 +220,25 @@ type BucketGetObjectsOutput struct {
}
type BucketWebsiteRoutingRule struct {
ConditionErrorCode string `json:"condition_error_code"`
ConditionPrefix string `json:"condition_prefix"`
ConditionErrorCode string
ConditionPrefix string
RedirectProtocol string `json:"redirect_protocol"`
RedirectReplaceKey string `json:"redirect_replace_key"`
RedirectReplaceKeyPrefix string `json:"redirect_replace_key_prefix"`
RedirectProtocol string
RedirectReplaceKey string
RedirectReplaceKeyPrefix string
}
type BucketWebsiteConf struct {
// 主页
Index string `json:"index"`
Index string
// 错误时返回的文档
ErrorDocument string `json:"error_document"`
ErrorDocument string
// http或https
Protocol string `json:"protocol"`
Protocol string
Rules []BucketWebsiteRoutingRule `json:"rules"`
Rules []BucketWebsiteRoutingRule
// 访问网站url
Url string `json:"url"`
Url string
}
func (input *BucketWebsiteConf) Validate() error {
@@ -255,14 +255,14 @@ func (input *BucketWebsiteConf) Validate() error {
}
type BucketCORSRule struct {
AllowedMethods []string `json:"allowed_methods"`
AllowedMethods []string
// 允许的源站,可以是*
AllowedOrigins []string `json:"allowed_origins"`
AllowedHeaders []string `json:"allowed_headers"`
MaxAgeSeconds int `json:"max_age_seconds"`
ExposeHeaders []string `json:"expose_headers"`
AllowedOrigins []string
AllowedHeaders []string
MaxAgeSeconds int
ExposeHeaders []string
// 规则区别标识
Id string `json:"id"`
Id string
}
type BucketCORSRules struct {
@@ -270,11 +270,11 @@ type BucketCORSRules struct {
}
type BucketCORSRuleDeleteInput struct {
Id []string `json:"id"`
Id []string
}
type BucketPolicy struct {
Data []BucketPolicyStatement `json:"data"`
Data []BucketPolicyStatement
}
type BucketPolicyStatement struct {
@@ -290,30 +290,30 @@ type BucketPolicyStatement struct {
Condition map[string]map[string]interface{} `json:"Condition,omitempty"`
// 解析字段主账号id:子账号id
PrincipalId []string `json:"principal_id"`
PrincipalId []string
// map[主账号id:子账号id]子账号name
PrincipalNames map[string]string `json:"principal_names"`
PrincipalNames map[string]string
// Read|ReadWrite|FullControl
CannedAction string `json:"canned_action"`
CannedAction string
// 资源路径
ResourcePath []string `json:"resource_path"`
ResourcePath []string
// 根据index 生成
Id string `json:"id"`
Id string
}
type BucketPolicyStatementInput struct {
// 主账号id:子账号id
PrincipalId []string `json:"principal_id"`
PrincipalId []string
// Read|ReadWrite|FullControl
CannedAction string `json:"canned_action"`
CannedAction string
// Allow|Deny
Effect string `json:"effect"`
Effect string
// 被授权的资源地址,/*
ResourcePath []string `json:"resource_path"`
ResourcePath []string
// ip 条件
IpEquals []string `json:"ip_equals"`
IpNotEquals []string `json:"ip_not_equals"`
IpEquals []string
IpNotEquals []string
}
func (input *BucketPolicyStatementInput) Validate() error {
@@ -338,7 +338,7 @@ func (input *BucketPolicyStatementInput) Validate() error {
}
type BucketPolicyDeleteInput struct {
Id []string `json:"id"`
Id []string
}
func (input *BucketCORSRules) Validate() error {
@@ -356,11 +356,11 @@ func (input *BucketCORSRules) Validate() error {
type BucketRefererConf struct {
// Referer Type
// enmu: Black-List, White-List
RefererType string `json:"referer_type"`
RefererType string
// 域名列表
DomainList []string `json:"domain_list"`
DomainList []string
// 是否允许空referer 访问
AllowEmptyRefer bool `json:"allow_empty_refer"`
AllowEmptyRefer bool
// 是否开启
Enabled bool `json:"enabled"`
@@ -377,9 +377,9 @@ func init() {
}
type BucketProbeResult struct {
UploadTime time.Duration `json:"upload_time"`
DownloadTime time.Duration `json:"download_time"`
DeleteTime time.Duration `json:"delete_time"`
UploadTime time.Duration
DownloadTime time.Duration
DeleteTime time.Duration
}
func (result BucketProbeResult) UploadDelayMs() float64 {

View File

@@ -46,17 +46,17 @@ const (
type CdnDomain struct {
// cdn加速域名
Domain string `json:"domain"`
Domain string
// 状态 rejected(域名未审核)|processing(部署中)|online|offline
Status string `json:"status"`
Status string
// 区域 mainland|overseas|global
Area string `json:"area"`
Area string
// cdn Cname
Cname string `json:"cname"`
Cname string
// 源站
Origin string `json:"origin"`
Origin string
// 源站类型 domain|ip|bucket
OriginType string `json:"origin_type"`
OriginType string
}
type CdnDomains struct {
@@ -97,9 +97,9 @@ type CDNDomainListInput struct {
}
type CDNCustomHostnameOutput struct {
Data []cloudprovider.CustomHostname `json:"data"`
Data []cloudprovider.CustomHostname
}
type CDNDeleteCustomHostnameInput struct {
Id string `json:"id"`
Id string
}

View File

@@ -143,10 +143,10 @@ type CloudaccountCreateInput struct {
// enum: ["VMware", "Aliyun", "Qcloud", "Azure", "Aws", "Huawei", "OpenStack", "Ucloud", "ZStack", "Google", "Ctyun", "JDcloud"]
Provider string `json:"provider"`
// swagger:ignore
AccountId string `json:"account_id"`
AccountId string
// 跳过重复账号注册检查
SkipDuplicateAccountCheck bool `json:"skip_duplicate_account_check"`
SkipDuplicateAccountCheck bool
// 指定云平台品牌, 此参数默认和provider相同
// requried: false
@@ -169,9 +169,9 @@ type CloudaccountCreateInput struct {
Brand string `json:"brand"`
// swagger:ignore
IsPublicCloud bool `json:"is_public_cloud"`
IsPublicCloud bool
// swagger:ignore
IsOnPremise bool `json:"is_on_premise"`
IsOnPremise bool
// 指定云账号所属的项目
// Tenant string `json:"tenant"`
@@ -231,7 +231,7 @@ type SProjectMappingResourceInput struct {
type CloudaccountShareModeInput struct {
apis.Meta
ShareMode string `json:"share_mode"`
ShareMode string
}
func (i CloudaccountShareModeInput) Validate() error {
@@ -356,7 +356,7 @@ type CloudaccountDetail struct {
ProjectMappingResourceInfo
// 上次同步耗时
LastSyncCost string `json:"last_sync_cost"`
LastSyncCost string
}
func (self CloudaccountDetail) GetMetricTags() map[string]string {
@@ -459,8 +459,8 @@ type VSwitch struct {
}
type SimpleHost struct {
Id string `json:"id"`
Name string `json:"name"`
Id string
Name string
}
type CAWireNet struct {
@@ -536,8 +536,8 @@ type EnrollmentAccountQuery struct {
}
type CloudaccountSyncSkusInput struct {
Resource string `json:"resource"`
Force bool `json:"force"`
Resource string
Force bool
CloudregionResourceInput
CloudproviderResourceInput
@@ -568,7 +568,7 @@ type SyncRangeInput struct {
Zone []string `json:"zone"`
Host []string `json:"host"`
// swagger:ignore
// swagger: ignore
SkipSyncResources []string `json:"skip_sync_resources"`
// 按资源类型同步,可输入多个
@@ -585,7 +585,7 @@ func (self *SyncRangeInput) IsNotSkipSyncResource(res iRes) bool {
}
type SAccountPermission struct {
Permissions []string `json:"permissions"`
Permissions []string
}
type SkipSyncResources []string

View File

@@ -143,7 +143,7 @@ type CloudproviderDetails struct {
ProjectMappingResourceInfo
// 上次同步耗时
LastSyncCost string `json:"last_sync_cost"`
LastSyncCost string
}
// 云订阅输入参数

View File

@@ -46,9 +46,6 @@ const (
CONTAINER_DEV_VASTAITECH_GPU = "VASTAITECH_GPU"
CONTAINER_DEV_HYGON_DCU = "HYGON_DCU"
CONTAINER_DEV_HYGON_DCU_HAMI = "HYGON_DCU_HAMI"
CONTAINER_DEV_ILUVATAR_GPU = "ILUVATAR_GPU"
CONTAINER_DEV_THEAD_PPU = "THEAD_PPU"
CONTAINER_DEV_KUNLUNXIN_XPU = "KUNLUNXIN_XPU"
)
var (
@@ -61,9 +58,6 @@ var (
CONTAINER_DEV_VASTAITECH_GPU,
CONTAINER_DEV_HYGON_DCU,
CONTAINER_DEV_HYGON_DCU_HAMI,
CONTAINER_DEV_ILUVATAR_GPU,
CONTAINER_DEV_THEAD_PPU,
CONTAINER_DEV_KUNLUNXIN_XPU,
}
)
@@ -272,7 +266,7 @@ type ContainerCommitExternalRegistry struct {
}
type ContainerCommitInput struct {
// Container registry id from glance (or kubeserver during migration)
// Container registry id from kubeserver
RegistryId string `json:"registry_id"`
ExternalRegistry *ContainerCommitExternalRegistry `json:"external_registry"`
// image name

View File

@@ -41,7 +41,7 @@ type DBInstanceCreateInput struct {
// 创建只读实例时此参数必传
MasterInstance string `json:"master_instance"`
// swagger:ignore
MasterInstanceId string `json:"master_instance_id"`
MasterInstanceId string
// 安全组Id列表
//
@@ -65,16 +65,16 @@ type DBInstanceCreateInput struct {
Zone3 string `json:"zone3"`
// swagger:ignore
ZoneId string `json:"zone_id"`
ZoneId string
// swagger:ignore
CloudregionId string `json:"cloudregion_id"`
CloudregionId string
// swagger:ignore
VpcId string `json:"vpc_id"`
VpcId string
// swagger:ignore
ManagerId string `json:"manager_id"`
ManagerId string
// 包年包月时间周期
Duration string `json:"duration"`
@@ -90,7 +90,7 @@ type DBInstanceCreateInput struct {
// enum: ["postpaid", "prepaid"]
BillingType billing_api.TBillingType `json:"billing_type"`
// swagger:ignore
BillingCycle string `json:"billing_cycle"`
BillingCycle string
// 套餐名称, 若此参数不填, 则必须有vmem_size_mb及vcpu_count参数
// 套餐列表可以通过 dbinstancesku 获取
@@ -170,8 +170,8 @@ type DBInstanceCreateInput struct {
type SDBInstanceChangeConfigInput struct {
apis.Meta
InstanceType string `json:"instance_type"`
DiskSizeGB int `json:"disk_size_gb"`
InstanceType string
DiskSizeGB int
}
type SDBInstanceRecoveryConfigInput struct {

View File

@@ -21,7 +21,7 @@ type SDBInstanceAccountPrivilege struct {
// required: true
Database string `json:"database"`
// swagger:ignore
DBInstancedatabaseId string `json:"db_instancedatabase_id"`
DBInstancedatabaseId string
// 权限类型
//

View File

@@ -29,18 +29,18 @@ type DBInstanceBackupCreateInput struct {
// required: false
Databases []string `json:"databases"`
// swagger:ignore
DBNames string `json:"db_names"`
DBNames string
// swagger:ignore
Engine string `json:"engine"`
Engine string
// swagger:ignore
EngineVersion string `json:"engine_version"`
EngineVersion string
// swagger:ignore
CloudregionId string `json:"cloudregion_id"`
CloudregionId string
// swagger:ignore
BackupMode string `json:"backup_mode"`
BackupMode string
// swagger:ignore
ManagerId string `json:"manager_id"`
ManagerId string
}
type DBInstanceBackupDetails struct {

View File

@@ -21,7 +21,7 @@ type SDBInstanceDatabasePrivilege struct {
// required: true
Account string `json:"account"`
// swagger:ignore
DBInstanceaccountId string `json:"db_instanceaccount_id"`
DBInstanceaccountId string
// 权限
//
//

View File

@@ -307,11 +307,11 @@ type DiskUpdateInput struct {
}
type DiskSaveInput struct {
Name string `json:"name"`
Format string `json:"format"`
Name string
Format string
// swagger:ignore
ImageId string `json:"image_id"`
// swagger: ignore
ImageId string
}
type DiskResizeInput struct {
@@ -328,48 +328,48 @@ func (self DiskResizeInput) SizeMb() (int, error) {
}
type DiskAllocateInput struct {
Format string `json:"format"`
DiskSizeMb int `json:"disk_size_mb"`
ImageId string `json:"image_id"`
ImageFormat string `json:"image_format"`
FsFormat string `json:"fs_format"`
FsFeatures *DiskFsFeatures `json:"fs_features"`
Rebuild bool `json:"rebuild"`
BackingDiskId string `json:"backing_disk_id"`
SnapshotId string `json:"snapshot_id"`
Format string
DiskSizeMb int
ImageId string
ImageFormat string
FsFormat string
FsFeatures *DiskFsFeatures
Rebuild bool
BackingDiskId string
SnapshotId string
BackupId string `json:"backup_id"`
Backup *DiskAllocateFromBackupInput `json:"backup"`
BackupId string
Backup *DiskAllocateFromBackupInput
SnapshotUrl string `json:"snapshot_url"`
Protocol string `json:"protocol"`
SrcDiskId string `json:"src_disk_id"`
SrcPool string `json:"src_pool"`
ExistingPath string `json:"existing_path"`
SnapshotUrl string
Protocol string
SrcDiskId string
SrcPool string
ExistingPath string
// vmware
HostIp string `json:"host_ip"`
Datastore vcenter.SVCenterAccessInfo `json:"datastore"`
HostIp string
Datastore vcenter.SVCenterAccessInfo
// encryption
Encryption bool `json:"encryption"`
EncryptInfo apis.SEncryptInfo `json:"encrypt_info"`
Encryption bool
EncryptInfo apis.SEncryptInfo
}
type DiskAllocateFromBackupInput struct {
BackupId string `json:"backup_id"`
BackupStorageId string `json:"backup_storage_id"`
BackupStorageAccessInfo *SBackupStorageAccessInfo `json:"backup_storage_access_info"`
DiskConfig *DiskConfig `json:"disk_config"`
BackupAsTar *DiskBackupAsTarInput `json:"backup_as_tar"`
BackupFilePath string `json:"backup_file_path"`
BackupId string
BackupStorageId string
BackupStorageAccessInfo *jsonutils.JSONDict
DiskConfig *DiskConfig `json:"disk_config"`
BackupAsTar *DiskBackupAsTarInput `json:"backup_as_tar"`
}
type DiskDeleteInput struct {
SkipRecycle *bool `json:"skip_recycle"`
EsxiFlatFilePath string `json:"esxi_flat_file_path"`
CleanSnapshots bool `json:"clean_snapshots"`
SnapshotIds []string `json:"snapshot_ids"`
SkipRecycle *bool
EsxiFlatFilePath string
CleanSnapshots bool
SnapshotIds []string
}
type DiskResetInput struct {

View File

@@ -184,7 +184,7 @@ type ElasticcacheCreateInput struct {
// 主可用区名称或Id
ZoneId string `json:"zone_id"`
// swagger:ignore
// swagger: ignore
Zone string `json:"zone" yunion-deprecated-by:"zone_id"`
// 备可用区名称或Id列表, split by: ,
@@ -197,7 +197,7 @@ type ElasticcacheCreateInput struct {
// required: true
NetworkId string `json:"network_id"`
// swagger:ignore
// swagger: ignore
Network string `json:"network" yunion-deprecated-by:"network_id"`
// 网络类型
@@ -220,7 +220,7 @@ type ElasticcacheCreateInput struct {
NodeType string `json:"node_type"`
// swagger:ignore
// swagger: ignore
MemorySizeMb int `json:"memory_size_mb" yunion-deprecated-by:"capacity_mb"`
// 初始密码
@@ -239,10 +239,10 @@ type ElasticcacheCreateInput struct {
PrivateIp string `json:"private_ip"`
// swagger:ignore
VpcId string `json:"vpc_id"`
VpcId string
// swagger:ignore
ManagerId string `json:"manager_id"`
ManagerId string
// 包年包月时间周期
Duration string `json:"duration"`
@@ -258,7 +258,7 @@ type ElasticcacheCreateInput struct {
// enum: ["postpaid", "prepaid"]
BillingType billing_api.TBillingType `json:"billing_type"`
// swagger:ignore
BillingCycle string `json:"billing_cycle"`
BillingCycle string
// 弹性缓存维护时间段
// 华为云此参数可选,其它云该参数无效

View File

@@ -106,9 +106,9 @@ type FileSystemDetails struct {
ManagedResourceInfo
CloudregionResourceInfo
Vpc string `json:"vpc"`
Network string `json:"network"`
Zone string `json:"zone"`
Vpc string
Network string
Zone string
}
type FileSystemRemoteUpdateInput struct {

View File

@@ -159,11 +159,11 @@ type ZoneListInput struct {
Location []string `json:"location"`
Contacts []string `json:"contacts"`
OrderByWires string `json:"order_by_wires"`
OrderByHosts string `json:"order_by_hosts"`
OrderByHostsEnabled string `json:"order_by_hosts_enabled"`
OrderByBaremetals string `json:"order_by_baremetals"`
OrderByBaremetalsEnabled string `json:"order_by_baremetals_enabled"`
OrderByWires string
OrderByHosts string
OrderByHostsEnabled string
OrderByBaremetals string
OrderByBaremetalsEnabled string
}
type ZoneResourceInput struct {

View File

@@ -33,8 +33,8 @@ type GroupJointsListInput struct {
type GroupguestDetails struct {
GroupJointResourceDetails
Server string `json:"server"`
Guest string `json:"guest"`
Server string
Guest string
SGroupguest
}

View File

@@ -20,7 +20,7 @@ type GuestDiskDetails struct {
SGuestdisk
// 磁盘名称
Disk string `json:"disk"`
Disk string
// 存储类型
// example: local

View File

@@ -15,38 +15,38 @@
package compute
type SSubImage struct {
Id string `json:"id"`
Name string `json:"name"`
MinDiskMB int32 `json:"min_disk_mb"`
DiskFormat string `json:"disk_format"`
Id string
Name string
MinDiskMB int32
DiskFormat string
}
type SImagesInGuest struct {
Id string `json:"id"`
Name string `json:"name"`
RootImage SSubImage `json:"root_image"`
DataImages []SSubImage `json:"data_images"`
Id string
Name string
RootImage SSubImage
DataImages []SSubImage
}
type SGuestScreenDumpInfo struct {
S3AccessKey string `json:"s3_access_key"`
S3SecretKey string `json:"s3_secret_key"`
S3Endpoint string `json:"s3_endpoint"`
S3BucketName string `json:"s3_bucket_name"`
S3ObjectName string `json:"s3_object_name"`
S3UseSSL bool `json:"s3_use_ssl"`
S3AccessKey string
S3SecretKey string
S3Endpoint string
S3BucketName string
S3ObjectName string
S3UseSSL bool
}
type GuestScreenDumpListInput struct {
Server string `json:"server"`
Server string
}
type GetDetailsGuestScreenDumpInput struct {
ObjectName string `json:"object_name"`
ObjectName string
}
type GetDetailsGuestScreenDumpOutput struct {
GuestId string `json:"guest_id"`
Name string `json:"name"`
ScreenDump string `json:"screen_dump"`
GuestId string
Name string
ScreenDump string
}

View File

@@ -22,54 +22,54 @@ const (
)
type GuestSshableMethodData struct {
Method string `json:"method"`
Host string `json:"host"`
Port int `json:"port"`
Method string
Host string
Port int
Sshable bool `json:"sshable"`
Reason string `json:"reason"`
Sshable bool
Reason string
ForwardDetails ForwardDetails `json:"forward_details"`
ForwardDetails ForwardDetails
}
type ForwardDetails struct {
ProxyAgentId string `json:"proxy_agent_id"`
ProxyEndpointId string `json:"proxy_endpoint_id"`
ProxyAgentId string
ProxyEndpointId string
}
type GuestSshableOutput struct {
User string `json:"user"`
PublicKey string `json:"public_key"`
User string
PublicKey string
MethodTried []GuestSshableMethodData `json:"method_tried"`
MethodTried []GuestSshableMethodData
}
type GuestHaveAgentInput struct {
}
type GuestHaveAgentOutput struct {
Have bool `json:"have"`
Have bool
}
type GuestMakeSshableInput struct {
User string `json:"user"`
PrivateKey string `json:"private_key"`
Password string `json:"password"`
Port int `json:"port"`
User string
PrivateKey string
Password string
Port int
}
type GuestMakeSshableOutput struct {
AnsiblePlaybookId string `json:"ansible_playbook_id"`
AnsiblePlaybookId string
}
type GuestMakeSshableCmdOutput struct {
ShellCmd string `json:"shell_cmd"`
ShellCmd string
}
type GuestSetSshportInput struct {
Port int `json:"port"`
Port int
}
type GuestSshportOutput struct {
Port int `json:"port"`
Port int
}

View File

@@ -216,10 +216,10 @@ type GuestnetworkSecgroupDesc struct {
}
type SNicTrafficRecord struct {
RxTraffic int64 `json:"rx_traffic"`
TxTraffic int64 `json:"tx_traffic"`
RxTraffic int64
TxTraffic int64
HasBeenSetDown bool `json:"has_been_set_down"`
HasBeenSetDown bool
}
type GuestNicTrafficSyncInput struct {

View File

@@ -84,7 +84,6 @@ type ServerListInput struct {
OrderByIp string `json:"order_by_ip"`
// 根据ip查找机器
// swagger:ignore
IpAddr string `json:"ip_addr" yunion-deprecated-by:"ip_addrs"`
// 根据多个ip查找机器
IpAddrs []string `json:"ip_addrs"`
@@ -96,7 +95,6 @@ type ServerListInput struct {
AttachableServersForDisk string `json:"attachable_servers_for_disk"`
// Deprecated
// 列出可以挂载磁盘的主机
// swagger:ignore
Disk string `json:"disk" yunion-deprecated-by:"attachable_servers_for_disk"`
// 按主机资源类型进行排序
@@ -159,13 +157,13 @@ func (input *ServerListInput) AfterUnmarshal() {
type ServerRebuildRootInput struct {
apis.Meta
// swagger:ignore
// swagger: ignore
Image string `json:"image" yunion-deprecated-by:"image_id"`
// 关机且停机不收费情况下不允许重装系统
// 镜像 id
// required: true
ImageId string `json:"image_id"`
// swagger:ignore
// swagger: ignore
// Keypair string `json:"keypair" yunion-deprecated-by:"keypair_id"`
// 秘钥Id
// KeypairId string `json:"keypair_id"`
@@ -560,7 +558,7 @@ type GuestSyncFixNicsInput struct {
}
type GuestMigrateInput struct {
// swagger:ignore
// swagger: ignore
PreferHost string `json:"prefer_host" yunion-deprecated-by:"prefer_host_id"`
PreferHostId string `json:"prefer_host_id"`
AutoStart bool `json:"auto_start"`
@@ -568,7 +566,7 @@ type GuestMigrateInput struct {
}
type GuestLiveMigrateInput struct {
// swagger:ignore
// swagger: ignore
PreferHost string `json:"prefer_host" yunion-deprecated-by:"prefer_host_id"`
// 指定期望的迁移目标宿主机
PreferHostId string `json:"prefer_host_id"`
@@ -731,28 +729,28 @@ type ServerRestartInput struct {
type ServerSaveImageInput struct {
// 镜像名称
Name string `json:"name"`
GenerateName string `json:"generate_name"`
Notes string `json:"notes"`
IsPublic *bool `json:"is_public"`
Name string
GenerateName string
Notes string
IsPublic *bool
// 镜像格式
Format string `json:"format"`
Format string
// 保存镜像后是否自动启动,若实例状态为运行中,则会先关闭实例
// 公有云若支持开机保存镜像,此参数则不生效
// default: false
AutoStart bool `json:"auto_start"`
// swagger:ignore
Restart bool `json:"restart"`
AutoStart bool
// swagger: ignore
Restart bool
// swagger:ignore
OsType string `json:"os_type"`
// swagger: ignore
OsType string
// swagger:ignore
OsArch string `json:"os_arch"`
// swagger: ignore
OsArch string
// swagger:ignore
ImageId string `json:"image_id"`
// swagger: ignore
ImageId string
}
type ServerSaveGuestImageInput struct {
@@ -765,23 +763,23 @@ type ServerSaveGuestImageInput struct {
type ServerDeleteInput struct {
// 是否越过回收站直接删除
// default: false
OverridePendingDelete bool `json:"override_pending_delete"`
OverridePendingDelete bool
// 是否仅删除本地资源
// default: false
Purge bool `json:"purge"`
Purge bool
// 是否删除快照
// default: false
DeleteSnapshots bool `json:"delete_snapshots"`
DeleteSnapshots bool
// 是否删除关联的EIP
// default: false
DeleteEip bool `json:"delete_eip"`
DeleteEip bool
// 是否删除关联的数据盘
// default: false
DeleteDisks bool `json:"delete_disks"`
DeleteDisks bool
}
type ServerDetachnetworkInput struct {
@@ -815,7 +813,6 @@ type ServerSetNetworkNumQueuesInput struct {
type ServerMigrateForecastInput struct {
PreferHostId string `json:"prefer_host_id"`
// Deprecated
// swagger:ignore
PreferHost string `json:"prefer_host" yunion-deprecated-by:"prefer_host_id"`
LiveMigrate bool `json:"live_migrate"`
SkipCpuCheck bool `json:"skip_cpu_check"`
@@ -826,7 +823,7 @@ type ServerMigrateForecastInput struct {
}
type ServerResizeDiskInput struct {
// swagger:ignore
// swagger: ignore
Disk string `json:"disk" yunion-deprecated-by:"disk_id"`
// 磁盘Id
DiskId string `json:"disk_id"`
@@ -853,7 +850,7 @@ type ServerDeployInput struct {
}
type ServerDeployInputBase struct {
// swagger:ignore
// swagger: ignore
Keypair string `json:"keypair" yunion-deprecated-by:"keypair_id"`
// 秘钥Id
KeypairId string `json:"keypair_id"`
@@ -872,15 +869,15 @@ type ServerDeployInputBase struct {
// 支持特殊user data平台: Aliyun, Qcloud, Azure, Apsara, Ucloud
// required: false
UserData string `json:"user_data"`
// swagger:ignore
// swagger: ignore
LoginAccount string `json:"login_account"`
// swagger:ignore
// swagger: ignore
Restart bool `json:"restart"`
// swagger:ignore
// swagger: ignore
DeployConfigs []*DeployConfig `json:"deploy_configs"`
// swagger:ignore
// swagger: ignore
DeployTelegraf bool `json:"deploy_telegraf"`
}
@@ -906,9 +903,9 @@ type ServerChangeConfigInput struct {
// 关机且停机不收费情况下不允许调整配置
// 实例类型, 优先级高于vcpu_count和vmem_size
InstanceType string `json:"instance_type"`
// swagger:ignore
// swagger: ignore
Sku string `json:"sku" yunion-deprecated-by:"instance_type"`
// swagger:ignore
// swagger: ignore
Flavor string `json:"flavor" yunion-deprecated-by:"instance_type"`
// cpu卡槽数
@@ -934,8 +931,8 @@ type ServerChangeConfigInput struct {
// disks start from index 1, i.e. cannot change size of system disk(1st disk)
Disks []DiskConfig `json:"disks"`
SetTrafficLimits []ServerNicTrafficLimit `json:"set_traffic_limits"`
ResetTrafficLimits []ServerNicTrafficLimit `json:"reset_traffic_limits"`
SetTrafficLimits []ServerNicTrafficLimit
ResetTrafficLimits []ServerNicTrafficLimit
}
type ServerUpdateInput struct {
@@ -959,7 +956,7 @@ type ServerUpdateInput struct {
SshPort int `json:"ssh_port"`
// swagger:ignore
// swagger: ignore
ProgressMbps float32 `json:"progress_mbps"`
}
@@ -1054,8 +1051,8 @@ type GuestJsonDesc struct {
}
type SVCpuPin struct {
Vcpu int `json:"vcpu"`
Pcpu int `json:"pcpu"`
Vcpu int
Pcpu int
}
type SCpuNumaPin struct {
@@ -1210,8 +1207,8 @@ type ServerGetCPUSetCoresResp struct {
type ServerGetNumaInfoInput struct{}
type ServerGetNumaInfoResp struct {
CpuNumaPin jsonutils.JSONObject `json:"cpu_numa_pin"`
IsolatedDevicesNumaNode []int8 `json:"isolated_devices_numa_node"`
CpuNumaPin jsonutils.JSONObject
IsolatedDevicesNumaNode []int8
}
type ServerGetHardwareInfoInput struct{}
@@ -1267,8 +1264,8 @@ type ServerGetHardwareInfoResp struct {
}
type ServerMonitorInput struct {
COMMAND string `json:"command"`
QMP bool `json:"qmp"`
COMMAND string
QMP bool
}
type ServerQemuInfo struct {
@@ -1299,8 +1296,8 @@ type IfnameDetail struct {
}
type ServerQgaSetPasswordInput struct {
Username string `json:"username"`
Password string `json:"password"`
Username string
Password string
}
type ServerQgaGuestInfoTaskInput struct {
@@ -1308,11 +1305,11 @@ type ServerQgaGuestInfoTaskInput struct {
type ServerQgaSetNetworkInput struct {
ServerQgaTimeoutInput
Device string `json:"device"`
Ipmask string `json:"ipmask"`
Gateway string `json:"gateway"`
Ip6mask string `json:"ip6mask"`
Gateway6 string `json:"gateway6"`
Device string
Ipmask string
Gateway string
Ip6mask string
Gateway6 string
}
type ServerQgaGetNetworkInput struct {
@@ -1320,21 +1317,21 @@ type ServerQgaGetNetworkInput struct {
type ServerQgaTimeoutInput struct {
// qga execute timeout second
Timeout int `json:"timeout"`
Timeout int
}
type ServerQgaCommandInput struct {
ServerQgaTimeoutInput
Command string `json:"command"`
Command string
}
type ServerSetPasswordInput struct {
Username string `json:"username"`
Password string `json:"password"`
Username string
Password string
// deploy params
ResetPassword bool `json:"reset_password"`
AutoStart bool `json:"auto_start"`
ResetPassword bool
AutoStart bool
}
type ServerInsertVfdInput struct {
@@ -1528,9 +1525,9 @@ type ServerChangeConfigSpecs struct {
}
type DiskResizeSpec struct {
DiskId string `json:"disk_id"`
SizeMb int `json:"size_mb"`
OldSizeMb int `json:"old_size_mb"`
DiskId string
SizeMb int
OldSizeMb int
}
type ServerChangeConfigSettings struct {

View File

@@ -19,6 +19,7 @@ import (
cloudmux "yunion.io/x/cloudmux/pkg/apis/compute"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/apis"
billing_api "yunion.io/x/onecloud/pkg/apis/billing"
"yunion.io/x/onecloud/pkg/cloudcommon/types"
@@ -268,9 +269,9 @@ type HostDetails struct {
// reserved resource for isolated device
ReservedResourceForGpu *IsolatedDeviceReservedResourceInput `json:"reserved_resource_for_gpu"`
// isolated device count
IsolatedDeviceCount int `json:"isolated_device_count"`
IsolatedDeviceTypeCount map[string]int `json:"isolated_device_type_count"`
GuestPinnedCpus []int `json:"guest_pinned_cpus"`
IsolatedDeviceCount int
IsolatedDeviceTypeCount map[string]int
GuestPinnedCpus []int
// host init warnning
SysWarn string `json:"sys_warn"`
@@ -607,8 +608,8 @@ type HostUpdateInput struct {
}
type HostOfflineInput struct {
UpdateHealthStatus *bool `json:"update_health_status"`
Reason string `json:"reason"`
UpdateHealthStatus *bool `json:"update_health_status"`
Reason string
}
type SHostStorageStat struct {
@@ -643,8 +644,8 @@ type SHostReportDmesgInput struct {
}
type HostReserveCpusInput struct {
Cpus string `json:"cpus"`
Mems string `json:"mems"`
Cpus string
Mems string
DisableSchedLoadBalance *bool `json:"disable_sched_load_balance"`
ProcessesPrefix []string `json:"processes_prefix"`
}
@@ -701,7 +702,6 @@ type HostEnableNetifInput struct {
HostNetifInput
// Deprecated
// swagger:ignore
Network string `json:"network" yunion-deprecated-by:"network_id"`
NetworkId string `json:"network_id"`
@@ -735,15 +735,15 @@ type HostRemoveNetifInput struct {
}
type HostError struct {
Type string `json:"type"`
Id string `json:"id"`
Name string `json:"name"`
Content string `json:"content"`
Time time.Time `json:"time"`
Type string
Id string
Name string
Content string
Time time.Time
}
type HostSyncErrorsInput struct {
HostErrors []HostError `json:"host_errors"`
HostErrors []HostError
}
type HostLoginInfoInput struct {

View File

@@ -63,7 +63,7 @@ type STapServiceConfig struct {
Ifname string `json:"ifname"`
Mirrors []SMirrorConfig `json:"mirrors"`
Mirrors []SMirrorConfig
}
type SHostTapConfig struct {

View File

@@ -149,7 +149,6 @@ type SnapshotPolicyListInput struct {
OrderByBindDiskCount string `json:"order_by_bind_disk_count"`
OrderBySnapshotCount string `json:"order_by_snapshot_count"`
// 按类型过滤
// example: disk, server
Type string `json:"type"`
ResourceId []string `json:"resource_id"`

View File

@@ -95,31 +95,20 @@ type SSimpleBackup struct {
EncryptKeyId string `json:"encrypt_key_id"`
// 创建时间
CreatedAt time.Time `json:"created_at"`
// 备份文件路径
BackupFilePath string `json:"backup_file_path"`
}
type InstanceBackupRecoveryInput struct {
// description: name of guest
Name string `json:"name"`
Name string
}
type InstanceBackupPackInput struct {
PackageName string `json:"package_name"`
PackageName string
}
type InstanceBackupManagerCreateFromPackageInput struct {
apis.VirtualResourceCreateInput
BackupStorageId string `json:"backup_storage_id"`
PackageName string `json:"package_name"`
}
type SStoragePackInstanceBackup struct {
PackageName string `json:"package_name"`
BackupStorageId string `json:"backup_storage_id"`
BackupStorageAccessInfo *SBackupStorageAccessInfo `json:"backup_storage_access_info"`
BackupIds []string `json:"backup_ids"`
Metadata *InstanceBackupPackMetadata `json:"metadata"`
DiskBackups []SSimpleBackup `json:"disk_backups"`
BackupStorageId string
PackageName string
}

View File

@@ -68,7 +68,7 @@ type InterVpcNetworkAddVpcInput struct {
}
type InterVpcNetworkRemoveVpcInput struct {
VpcId string `json:"vpc_id"`
VpcId string
}
type InterVpcNetworkFilterListBase struct {

View File

@@ -38,6 +38,6 @@ type InterVpcNetworkRouteSetListInput struct {
apis.EnabledStatusStandaloneResourceListInput
apis.ExternalizedResourceBaseListInput
VpcFilterListInput
InterVpcNetworkId string `json:"inter_vpc_network_id"`
InterVpcNetworkId string
Cidr string `json:"cidr"`
}

View File

@@ -312,8 +312,8 @@ const (
)
type PCIEVersionThroughput struct {
Version string `json:"version"`
Throughput float64 `json:"throughput"`
Version string
Throughput float64
}
func NewPCIEVersionThroughput(version string) PCIEVersionThroughput {
@@ -395,12 +395,12 @@ type HostIsolatedDeviceModelDetails struct {
// 存储Id
IsolatedDeviceModelId string `json:"isolated_device_model_id"`
Model string `json:"model"`
VendorId string `json:"vendor_id"`
DeviceId string `json:"device_id"`
DevType string `json:"dev_type"`
HotPluggable bool `json:"hot_pluggable"`
DisableAutoDetect bool `json:"disable_auto_detect"`
Model string
VendorId string
DeviceId string
DevType string
HotPluggable bool
DisableAutoDetect bool
}
type IsolatedDeviceFilterListInput struct {

View File

@@ -50,9 +50,6 @@ const (
VASTAITECH_VENDOR_ID = "1ec6"
HYGON_VENDOR_ID = "1d94"
ASCEND_VENDOR_ID = "19e5"
ILUVATAR_VENDOR_ID = "1e3e"
THEAD_VENDOR_ID = "1ded"
KUNLUNXIN_VENDOR_ID = "1d22"
)
var ID_VENDOR_MAP = map[string]string{
@@ -61,9 +58,6 @@ var ID_VENDOR_MAP = map[string]string{
VASTAITECH_VENDOR_ID: "VASTAITECH",
ASCEND_VENDOR_ID: "ASCEND",
HYGON_VENDOR_ID: "HYGON",
ILUVATAR_VENDOR_ID: "ILUVATAR",
THEAD_VENDOR_ID: "THEAD",
KUNLUNXIN_VENDOR_ID: "KUNLUNXIN",
}
var VENDOR_ID_MAP = map[string]string{
@@ -72,9 +66,6 @@ var VENDOR_ID_MAP = map[string]string{
"VASTAITECH": VASTAITECH_VENDOR_ID,
"ASCEND": ASCEND_VENDOR_ID,
"HYGON": HYGON_VENDOR_ID,
"ILUVATAR": ILUVATAR_VENDOR_ID,
"THEAD": THEAD_VENDOR_ID,
"KUNLUNXIN": KUNLUNXIN_VENDOR_ID,
}
const (
@@ -100,9 +91,6 @@ var GPU_TYPES = []string{
CONTAINER_DEV_CPH_AMD_GPU, CONTAINER_DEV_NVIDIA_GPU, CONTAINER_DEV_NVIDIA_MPS, CONTAINER_DEV_NVIDIA_GPU_SHARE,
CONTAINER_DEV_NVIDIA_HAMI, CONTAINER_DEV_VASTAITECH_GPU,
CONTAINER_DEV_HYGON_DCU, CONTAINER_DEV_HYGON_DCU_HAMI,
CONTAINER_DEV_ILUVATAR_GPU,
CONTAINER_DEV_THEAD_PPU,
CONTAINER_DEV_KUNLUNXIN_XPU,
}
var NETINT_TYPES = []string{
@@ -114,9 +102,6 @@ var VALID_CONTAINER_DEVICE_TYPES = []string{
CONTAINER_DEV_NETINT_CA_ASIC, CONTAINER_DEV_NVIDIA_GPU, CONTAINER_DEV_NVIDIA_MPS, CONTAINER_DEV_NVIDIA_GPU_SHARE, CONTAINER_DEV_NVIDIA_HAMI,
CONTAINER_DEV_ASCEND_NPU, CONTAINER_DEV_VASTAITECH_GPU,
CONTAINER_DEV_HYGON_DCU, CONTAINER_DEV_HYGON_DCU_HAMI,
CONTAINER_DEV_ILUVATAR_GPU,
CONTAINER_DEV_THEAD_PPU,
CONTAINER_DEV_KUNLUNXIN_XPU,
}
var VALID_PASSTHROUGH_TYPES = []string{
@@ -137,9 +122,6 @@ var VITRUAL_DEVICE_TYPES = []string{
CONTAINER_DEV_VASTAITECH_GPU,
CONTAINER_DEV_HYGON_DCU,
CONTAINER_DEV_HYGON_DCU_HAMI,
CONTAINER_DEV_ILUVATAR_GPU,
CONTAINER_DEV_THEAD_PPU,
CONTAINER_DEV_KUNLUNXIN_XPU,
}
func init() {

View File

@@ -31,10 +31,10 @@ type KeypairCreateInput struct {
PublicKey string `json:"public_key"`
// swagger:ignore
PrivateKey string `json:"private_key"`
PrivateKey string
// swagger:ignore
Fingerprint string `json:"fingerprint"`
Fingerprint string
// 秘钥类型
// enum: ["RSA"]

View File

@@ -30,7 +30,7 @@ type KubeNodeCreateInput struct {
type KubeNodeDetails struct {
apis.StatusStandaloneResourceDetails
apis.InfrasResourceBaseDetails
DomainId string `json:"domain_id"`
DomainId string
}
type KubeNodeUpdateInput struct {

View File

@@ -47,14 +47,14 @@ type KubeNodePoolCreateInput struct {
// 秘钥id若不传则使用系统级秘钥
KeypairId string `json:"keypair_id"`
// swagger:ignore
// swagger: ignore
PublicKey string `json:"public_key"`
}
type KubeNodePoolDetails struct {
apis.StatusStandaloneResourceDetails
apis.InfrasResourceBaseDetails
DomainId string `json:"domain_id"`
DomainId string
}
type KubeNodePoolUpdateInput struct {

View File

@@ -26,8 +26,8 @@ import (
type LoadbalancerAgentDeployInput struct {
apis.Meta
Host ansible.Host `json:"host"`
DeployMethod string `json:"deploy_method"`
Host ansible.Host
DeployMethod string
}
const (
@@ -186,7 +186,7 @@ type LoadbalancerCreateInput struct {
// 是否跟随主机删除而自动释放
EipAutoDellocate bool `json:"eip_auto_dellocate,omitempty"`
// swagger:ignore
// swagger: ignore
Eip string `json:"eip" yunion-deprecated-by:"eip_id"`
// EIP Id
EipId string `json:"eip_id"`
@@ -213,8 +213,8 @@ type LoadbalancerCreateInput struct {
// Cloudregion string `json:"cloudregion"`
NetworkResourceInput
// 多子网
// swagger:ignore
Networks []string `json:"networks"`
// swagger: ignore
Networks []string
// Network string `json:"network"`
CloudproviderResourceInput
// Manager string `json:"manager"`

View File

@@ -39,21 +39,21 @@ type SLoadbalancerHealthCheckCreateInput struct {
CloudregionResourceInput
CloudproviderResourceInput
HealthCheckType string `json:"health_check_type"`
HealthCheckType string
HealthCheckDomain string `json:"health_check_domain"`
HealthCheckURI string `json:"health_check_uri"`
HealthCheckHttpCode string `json:"health_check_http_code"`
HealthCheckMethod string `json:"health_check_method"`
HealthCheckPort int `json:"health_check_port"`
HealthCheckDomain string
HealthCheckURI string
HealthCheckHttpCode string
HealthCheckMethod string
HealthCheckPort int
HealthCheckRise int `json:"health_check_rise"`
HealthCheckFall int `json:"health_check_fall"`
HealthCheckTimeout int `json:"health_check_timeout"`
HealthCheckInterval int `json:"health_check_interval"`
HealthCheckRise int
HealthCheckFall int
HealthCheckTimeout int
HealthCheckInterval int
HealthCheckReq string `json:"health_check_req"`
HealthCheckExp string `json:"health_check_exp"`
HealthCheckReq string
HealthCheckExp string
}
type SLoadbalancerHealthCheckUpdateInput struct {

View File

@@ -71,8 +71,8 @@ type LoadbalancerAclFilterListInput struct {
}
type SAclEntry struct {
Cidr string `json:"cidr"`
Comment string `json:"comment"`
Cidr string
Comment string
}
type SAclEntries []SAclEntry

View File

@@ -53,11 +53,11 @@ type LoadbalancerBackendListInput struct {
type LoadbalancerBackendCreateInput struct {
apis.StatusStandaloneResourceCreateInput
//swagger:ignore
//swagger: ignore
BackendGroup string `json:"backend_group" yunion-deprecated-by:"backend_group_id"`
BackendGroupId string `json:"backend_group_id"`
//swagger:ignore
//swagger: ignore
Backend string `json:"backend" yunion-deprecated-by:"backend_id"`
BackendId string `json:"backend_id"`

View File

@@ -68,7 +68,7 @@ type LoadbalancerBackendGroupFilterListInput struct {
type LoadbalancerBackendGroupCreateInput struct {
apis.StatusStandaloneResourceCreateInput
//swagger:ignore
//swagger: ignore
Loadbalancer string `json:"loadbalancer" yunion-deprecated-by:"loadbalancer_id"`
// 负载均衡ID
LoadbalancerId string `json:"loadbalancer_id"`
@@ -78,17 +78,17 @@ type LoadbalancerBackendGroupCreateInput struct {
Type string `json:"type"`
Backends []struct {
Index int `json:"index"`
Weight int `json:"weight"`
Port int `json:"port"`
Id string `json:"id"`
Name string `json:"name"`
ExternalId string `json:"external_id"`
BackendType string `json:"backend_type"`
BackendRole string `json:"backend_role"`
Address string `json:"address"`
ZoneId string `json:"zone_id"`
HostName string `json:"host_name"`
Index int
Weight int
Port int
Id string
Name string
ExternalId string
BackendType string
BackendRole string
Address string
ZoneId string
HostName string
} `json:"backends"`
}
@@ -106,11 +106,11 @@ type LoadbalancerBackendGroupListInput struct {
type ListenerRuleBackendGroup struct {
// 后端服务器组组ID
Id string `json:"id"`
Id string
// swagger:ignore
Name string `json:"name"`
Name string
// swagger:ignore
ExternalId string `json:"external_id"`
ExternalId string
}
type ListenerRuleBackendGroups []ListenerRuleBackendGroup
@@ -124,8 +124,8 @@ func (groups ListenerRuleBackendGroups) IsZero() bool {
}
type ListenerRuleRedirectPool struct {
RegionPools map[string]ListenerRuleBackendGroups `json:"region_pools"`
CountryPools map[string]ListenerRuleBackendGroups `json:"country_pools"`
RegionPools map[string]ListenerRuleBackendGroups
CountryPools map[string]ListenerRuleBackendGroups
}
func (pool ListenerRuleRedirectPool) String() string {

View File

@@ -78,20 +78,20 @@ type LoadbalancerCertificateCreateInput struct {
Certificate string `json:"certificate"`
PrivateKey string `json:"private_key"`
// swagger:ignore
// swagger: ignore
Fingerprint string `json:"fingerprint"`
// swagger:ignore
// swagger: ignore
PublicKeyAlgorithm string `json:"public_key_algorithm"`
// swagger:ignore
// swagger: ignore
PublicKeyBitLen int `json:"public_key_bit_len"`
// swagger:ignore
// swagger: ignore
SignatureAlgorithm string `json:"signature_algorithm"`
// swagger:ignore
// swagger: ignore
NotBefore time.Time `json:"not_before"`
// swagger:ignore
// swagger: ignore
NotAfter time.Time `json:"not_after"`
// swagger:ignore
// swagger: ignore
CommonName string `json:"common_name"`
// swagger:ignore
// swagger: ignore
SubjectAlternativeNames string `json:"subject_alternative_names"`
}

View File

@@ -93,12 +93,12 @@ type LoadbalancerListenerListInput struct {
type LoadbalancerListenerCreateInput struct {
apis.StatusStandaloneResourceCreateInput
// swagger:ignore
// swagger: ignore
Loadbalancer string `json:"loadbalancer" yunion-deprecated-by:"loadbalancer_id"`
// 负载均衡ID
LoadbalancerId string `json:"loadbalancer_id"`
//swagger:ignore
//swagger: ignore
BackendGroup string `json:"backend_group" yunion-deprecated-by:"backend_group_id"`
BackendGroupId string `json:"backend_group_id"`
@@ -131,7 +131,7 @@ type LoadbalancerListenerCreateInput struct {
EgressMbps int `json:"egress_mbps"`
//swagger:ignore
//swagger: ignore
Certificate string `json:"certificate" yunion-deprecated-by:"certificate_id"`
CertificateId string `json:"certificate_id"`
@@ -173,7 +173,7 @@ type LoadbalancerListenerCreateInput struct {
RedirectHost string `json:"redirect_host"`
RedirectPath string `json:"redirect_path"`
//swagger:ignore
//swagger: ignore
Acl string `json:"acl" yunion-deprecated-by:"acl_id"`
AclId string `json:"acl_id"`
@@ -294,7 +294,7 @@ type LoadbalancerListenerUpdateInput struct {
AclStatus *string `json:"acl_status"`
AclType *string `json:"acl_type"`
//swagger:ignore
//swagger: ignore
Acl *string `json:"acl" yunion-deprecated-by:"acl_id"`
AclId *string `json:"acl_id"`
@@ -321,7 +321,7 @@ type LoadbalancerListenerUpdateInput struct {
XForwardedFor *bool `json:"x_forwarded_for"`
Gzip *bool `json:"gzip"`
//swagger:ignore
//swagger: ignore
Certificate *string `json:"certificate" yunion-deprecated-by:"certificate_id"`
CertificateId *string `json:"certificate_id"`

View File

@@ -55,7 +55,7 @@ type LoadbalancerListenerRuleListInput struct {
type LoadbalancerListenerRuleCreateInput struct {
apis.StatusStandaloneResourceCreateInput
// swagger:ignore
// swagger: ignore
Listener string `json:"listener" yunion-deprecated-by:"listener_id"`
ListenerId string `json:"listener_id"`
@@ -76,11 +76,11 @@ type LoadbalancerListenerRuleCreateInput struct {
HttpRequstRate int `json:"http_request_rate"`
HttpRequstRatePerSec int `json:"http_request_rate_per_sec"`
Redirect string `json:"redirect"`
RedirectCode int64 `json:"redirect_code"`
RedirectScheme string `json:"redirect_scheme"`
RedirectHost string `json:"redirect_host"`
RedirectPath string `json:"redirect_path"`
Redirect string
RedirectCode int64
RedirectScheme string
RedirectHost string
RedirectPath string
Condition string `json:"conditon"`
}
@@ -133,7 +133,7 @@ func (self *LoadbalancerListenerRuleCreateInput) Validate() error {
type LoadbalancerListenerRuleUpdateInput struct {
apis.StatusStandaloneResourceBaseUpdateInput
// swagger:ignore
// swagger: ignore
Listener string `json:"listener" yunion-deprecated-by:"listener_id"`
ListenerId string `json:"listener_id"`
@@ -145,11 +145,11 @@ type LoadbalancerListenerRuleUpdateInput struct {
HttpRequstRate int `json:"http_request_rate"`
HttpRequstRatePerSec int `json:"http_request_rate_per_sec"`
Redirect string `json:"redirect"`
RedirectCode int64 `json:"redirect_code"`
RedirectScheme string `json:"redirect_scheme"`
RedirectHost string `json:"redirect_host"`
RedirectPath string `json:"redirect_path"`
Redirect string
RedirectCode int64
RedirectScheme string
RedirectHost string
RedirectPath string
Condition string `json:"conditon"`
}

View File

@@ -89,5 +89,5 @@ type ModelartsPoolSyncstatusInput struct {
}
type ModelartsPoolChangeConfigInput struct {
NodeCount int `json:"node_count"`
NodeCount int
}

View File

@@ -36,6 +36,6 @@ type ModelartsPoolSkuListInput struct {
apis.ExternalizedResourceBaseListInput
RegionalFilterListInput
ProcessorType string `json:"processor_type"`
CpuArch string `json:"cpu_arch"`
ProcessorType string
CpuArch string
}

View File

@@ -26,8 +26,8 @@ type MongoDBCreateInput struct {
type SMongoDBChangeConfigInput struct {
apis.Meta
InstanceType string `json:"instance_type"`
DiskSizeGB int `json:"disk_size_gb"`
InstanceType string
DiskSizeGB int
}
type MongoDBListInput struct {

View File

@@ -48,7 +48,7 @@ type MountTargetDetails struct {
VpcResourceInfo
NetworkResourceInfo
FileSystem string `json:"file_system"`
FileSystem string
}
type MountTargetCreateInput struct {

View File

@@ -19,31 +19,30 @@ import "yunion.io/x/onecloud/pkg/apis"
type SNatSCreateInput struct {
apis.Meta
Name string `json:"name"`
NatgatewayId string `json:"natgateway_id"`
NetworkId string `json:"network_id"`
// swagger:ignore
Ip string `json:"ip"`
Name string
NatgatewayId string
NetworkId string
// swagger: ignore
Ip string
// swagger:ignore
ExternalIpId string `json:"external_ip_id" yunion-deprecated-by:"eip"`
Eip string `json:"eip"`
SourceCidr string `json:"source_cidr"`
SourceCidr string
}
type SNatDCreateInput struct {
apis.Meta
Name string `json:"name"`
NatgatewayId string `json:"natgateway_id"`
InternalIp string `json:"internal_ip"`
InternalPort int `json:"internal_port"`
ExternalIp string `json:"external_ip"`
Name string
NatgatewayId string
InternalIp string
InternalPort int
ExternalIp string
Eip string `json:"eip"`
// swagger:ignore
ExternalIpId string `json:"external_ip_id" yunion-deprecated-by:"eip"`
ExternalPort int `json:"external_port"`
IpProtocol string `json:"ip_protocol"`
ExternalPort int
IpProtocol string
}
type NatDEntryDetails struct {

View File

@@ -266,7 +266,6 @@ type NetworkCreateInput struct {
VlanId *int `json:"vlan_id"`
// deprecated
// swagger:ignore
Vlan *int `json:"vlan" yunion-deprecated-by:"vlan_id"`
// 线路类型

View File

@@ -107,14 +107,14 @@ const (
)
type SNetworkUsedAddress struct {
IpAddr string `json:"ip_addr"`
Ip6Addr string `json:"ip6_addr"`
MacAddr string `json:"mac_addr"`
Owner string `json:"owner"`
OwnerId string `json:"owner_id"`
OwnerStatus string `json:"owner_status"`
OwnerType string `json:"owner_type"`
AssociateId string `json:"associate_id"`
AssociateType string `json:"associate_type"`
CreatedAt time.Time `json:"created_at"`
IpAddr string
Ip6Addr string
MacAddr string
Owner string
OwnerId string
OwnerStatus string
OwnerType string
AssociateId string
AssociateType string
CreatedAt time.Time
}

View File

@@ -40,13 +40,13 @@ var NetworkAddressParentTypes = choices.NewChoices(
type NetworkAddressCreateInput struct {
apis.StandaloneAnonResourceCreateInput
ParentType TNetworkAddressParentType `json:"parent_type"`
ParentId int64 `json:"parent_id"`
GuestId string `json:"guest_id"`
GuestnetworkIndex int8 `json:"guestnetwork_index"`
ParentType TNetworkAddressParentType
ParentId int64
GuestId string
GuestnetworkIndex int8
Type string `json:"type"`
NetworkId string `json:"network_id"`
Type string
NetworkId string
IPAddr string `json:"ip_addr"`
IPAddrs []string `json:"ip_addrs"`
}
@@ -55,7 +55,7 @@ type NetworkAddressListInput struct {
apis.StandaloneAnonResourceListInput
NetworkFilterListInput
GuestId []string `json:"guest_id"`
GuestId []string
ManagedResourceListInput
}
@@ -64,13 +64,13 @@ type NetworkAddressDetails struct {
apis.StandaloneAnonResourceDetails
NetworkResourceInfo
Type string `json:"type"`
ParentType string `json:"parent_type"`
ParentId string `json:"parent_id"`
NetworkId string `json:"network_id"`
IpAddr string `json:"ip_addr"`
Type string
ParentType string
ParentId string
NetworkId string
IpAddr string
SubCtrVid int `json:"sub_ctr_vid"`
SubCtrVid int
Guestnetwork GuestnetworkDetails `json:"guestnetwork"`
Guestnetwork GuestnetworkDetails
}

View File

@@ -17,7 +17,7 @@ package compute
import "yunion.io/x/onecloud/pkg/apis"
type PolicyDefinitionResourceListInput struct {
Policydefinition string `json:"policydefinition"`
Policydefinition string
}
type PolicyAssignmentListInput struct {

View File

@@ -46,16 +46,16 @@ type PolicyDefinitionDetails struct {
}
type PolicyDefinitionResourceInfo struct {
Policydefinition string `json:"policydefinition"`
Policydefinition string
}
type SCloudregionPolicyDefinition struct {
Id string `json:"id"`
Name string `json:"name"`
Id string
Name string
}
type SCloudregionPolicyDefinitions struct {
Cloudregions []SCloudregionPolicyDefinition `json:"cloudregions"`
Cloudregions []SCloudregionPolicyDefinition
}
type PolicyDefinitionSyncstatusInput struct {

View File

@@ -158,10 +158,10 @@ func (rules MappingRules) Validate() error {
type ProjectMappingRuleInfoDetails struct {
ProjectMappingRuleInfo
Project string `json:"project"`
TenantId string `json:"tenant_id"`
Tenant string `json:"tenant"`
Domain string `json:"domain"`
Project string
TenantId string
Tenant string
Domain string
}
type SProjectMappingAccount struct {
@@ -174,7 +174,7 @@ type ProjectMappingDetails struct {
apis.EnabledStatusInfrasResourceBaseDetails
Rules []ProjectMappingRuleInfoDetails `json:"rules"`
Rules []ProjectMappingRuleInfoDetails
// 所绑定的云账号列表
Accounts []SProjectMappingAccount `json:"accounts"`
@@ -195,7 +195,7 @@ type ProjectMappingListInput struct {
}
type ProjectMappingResourceInfo struct {
ProjectMapping string `json:"project_mapping"`
ProjectMapping string
}
type ProjectMappingUpdateInput struct {
@@ -207,7 +207,7 @@ type ProjectMappingUpdateInput struct {
type ProjectMappingFilterListInput struct {
ProjectMappingId string `json:"project_mapping_id"`
OrderByProjectMapping string `json:"order_by_project_mapping"`
OrderByProjectMapping string
}
func (self MappingRules) String() string {

View File

@@ -41,8 +41,8 @@ type RouteTableDetails struct {
SRouteTable
RouteSetCount int `json:"route_set_count"`
AccociationCount int `json:"accociation_count"`
RouteSetCount int
AccociationCount int
}
type SRoute struct {

View File

@@ -29,7 +29,7 @@ const (
type RouteTableRouteSetCreateInput struct {
apis.StatusStandaloneResourceCreateInput
RouteTableId string `json:"route_table_id"`
RouteTableId string
Cidr string `json:"cidr"`
NextHopType string `json:"next_hop_type"`
NextHopId string `json:"next_hop_id"`

View File

@@ -26,7 +26,7 @@ type ScalingGroupCreateInput struct {
// example: cr-test-one
Cloudregion string `json:"cloudregion"`
//swagger:ignore
//swagger: ignore
CloudregionId string `json:"cloudregion_id"`
// description: hypervisor
@@ -53,7 +53,7 @@ type ScalingGroupCreateInput struct {
// example: gt-test-one
GuestTemplate string `json:"guest_template"`
// swagger:ignore
// swagger: ignore
GuestTemplateId string `json:"guest_template_id"`
// description: 扩容策略
@@ -84,7 +84,7 @@ type ScalingGroupCreateInput struct {
// example: lbg-nihao
LbBackendGroup string `json:"lb_backend_group"`
// swagger:ignore
// swagger: ignore
BackendGroupId string `json:"backend_group_id"`
// description: 负载均衡后端服务器统一端口

View File

@@ -36,7 +36,7 @@ type ScalingPolicyCreateInput struct {
// example: sg-test-one
ScalingGroup string `json:"scaling_group"`
// swagger:ignore
// swagger: ignore
ScalingGroupId string `json:"scaling_group_id"`
// description: trigger type

View File

@@ -19,7 +19,7 @@ import "time"
type TimerCreateInput struct {
// description: 执行时间
ExecTime time.Time `json:"exec_time"`
ExecTime time.Time
}
type CycleTimerCreateInput struct {

View File

@@ -57,9 +57,9 @@ type SSecgroupRuleResource struct {
Ports string `json:"ports"`
// swagger:ignore
PortStart int `json:"port_start"`
PortStart int
// swagger:ignore
PortEnd int `json:"port_end"`
PortEnd int
// 方向
// enum: ["in", "out"]
@@ -97,7 +97,7 @@ type SSecgroupRuleCreateInput struct {
// swagger:ignore
Secgroup string `json:"secgroup" yunion-deprecated-by:"secgroup_id"`
// swagger:ignore
// swagger: ignore
Status string `json:"status"`
// 安全组ID
@@ -220,12 +220,12 @@ type SSecgroupCreateInput struct {
// vpc id
// defualt: default
VpcResourceInput
// swagger:ignore
// swagger: ignore
CloudproviderResourceInput
// swagger:ignore
// swagger: ignore
CloudregionResourceInput
// swagger:ignore
// swagger: ignore
GlobalvpcId string `json:"globalvpc_id"`
// 规则列表
@@ -426,8 +426,8 @@ type ElasticcachesecgroupDetails struct {
}
type SecurityGroupCloneInput struct {
Name string `json:"name"`
Description string `json:"description"`
Name string
Description string
}
type SecgroupImportRulesInput struct {

View File

@@ -36,7 +36,7 @@ type ServerSkuCreateInput struct {
ZoneId string `json:"zone_id"`
// swagger:ignore
InstanceTypeFamily string `json:"instance_type_family"`
InstanceTypeFamily string
// 套餐类型
//
@@ -56,7 +56,7 @@ type ServerSkuCreateInput struct {
InstanceTypeCategory string `json:"instance_type_category"`
// swagger:ignore
LocalCategory string `json:"local_category"`
LocalCategory string
// 预付费状态
// default: available
@@ -78,55 +78,55 @@ type ServerSkuCreateInput struct {
MemorySizeMB int64 `json:"memory_size_mb"`
// swagger:ignore
OsName string `json:"os_name"`
OsName string
// swagger:ignore
SysDiskResizable *bool `json:"sys_disk_resizable"`
SysDiskResizable *bool
// swagger:ignore
SysDiskType string `json:"sys_disk_type"`
SysDiskType string
// swagger:ignore
SysDiskMinSizeGB int `json:"sys_disk_min_size_gb"`
SysDiskMinSizeGB int
// swagger:ignore
SysDiskMaxSizeGB int `json:"sys_disk_max_size_gb"`
SysDiskMaxSizeGB int
// swagger:ignore
AttachedDiskType string `json:"attached_disk_type"`
AttachedDiskType string
// swagger:ignore
AttachedDiskSizeGB int `json:"attached_disk_size_gb"`
AttachedDiskSizeGB int
// swagger:ignore
AttachedDiskCount int `json:"attached_disk_count"`
AttachedDiskCount int
// swagger:ignore
DataDiskTypes string `json:"data_disk_types"`
DataDiskTypes string
// swagger:ignore
DataDiskMaxCount int `json:"data_disk_max_count"`
DataDiskMaxCount int
// swagger:ignore
NicType string `json:"nic_type"`
NicType string
// swagger:ignore
NicMaxCount int `json:"nic_max_count"`
NicMaxCount int
// swagger:ignore
GpuAttachable *bool `json:"gpu_attachable"`
GpuAttachable *bool
// swagger:ignore
GpuSpec string `json:"gpu_spec"`
GpuSpec string
// swagger:ignore
GpuCount int `json:"gpu_count"`
GpuCount int
// swagger:ignore
GpuMaxCount int `json:"gpu_max_count"`
GpuMaxCount int
// swagger:ignore
Provider string `json:"provider"`
Provider string
}
type ServerSkuDetails struct {

View File

@@ -36,7 +36,7 @@ type SnapshotCreateInput struct {
Location string `json:"location"`
// swagger:ignore
Size int `json:"size"`
// swagger:ignore
// swagger:ingore
VirtualSize int `json:"virtual_size"`
// swagger:ignore
DiskType string `json:"disk_type"`
@@ -115,8 +115,3 @@ type SnapshotDetails struct {
type SnapshotSyncstatusInput struct {
}
type SnapshotDeleteDiskSnapshotsInput struct {
// 磁盘ID
DiskId string `json:"disk_id"`
}

View File

@@ -42,9 +42,9 @@ type SnapshotPolicyDetails struct {
SSnapshotPolicy
// 绑定磁盘数量
BindingDiskCount int `json:"binding_disk_count"`
// 绑定主机数量
RetentionDays int `json:"retention_days"`
BindingDiskCount int `json:"binding_disk_count"`
BindingResourceCount int `json:"binding_resource_count"`
// 快照数量
SnapshotCount int `json:"snapshot_count"`
@@ -55,22 +55,13 @@ type SSnapshotPolicyCreateInput struct {
CloudproviderResourceInput
CloudregionResourceInput
// 自动快照保留时长 -1: 表示永久保留
RetentionDays int `json:"retention_days"`
// 自动快照保留数量
// 此配置优先级高于 RetentionDays
RetentionDays int `json:"retention_days"`
RetentionCount int `json:"retention_count"`
// 快照类型, 目前支持 disk, server
// disk: 自动磁盘快照策略, 只能关联磁盘
// server: 自动主机快照策略, 只能关联主机
Type string `json:"type"`
// 创建自动快照策略的执行周期
// 1. 周一到周日
// 2. 1~7, 1: Monday, 7: Sunday
RepeatWeekdays []int `json:"repeat_weekdays"`
// 创建自动快照策略的执行时间
// 0:00~23:59 每天, 0~23 每小时
// 创建自动快照策略的时间必须与 RepeatWeekdays 对应的创建周期相一致
TimePoints []int `json:"time_points"`
}
@@ -110,20 +101,11 @@ func (self *SSnapshotPolicyCreateInput) Validate() error {
type SSnapshotPolicyUpdateInput struct {
apis.VirtualResourceBaseUpdateInput
// 自动快照保留时长, -1: 表示永久保留
RetentionDays *int
// 自动快照保留数量
// 此配置优先级高于 RetentionDays
RetentionDays *int
RetentionCount *int
// 自动快照执行周期
// 1. 周一到周日
// 2. 1~7, 1: Monday, 7: Sunday
RepeatWeekdays *[]int `json:"repeat_weekdays"`
// 自动快照执行时间
// 0:00~23:59 每天, 0~23 每小时
// 创建自动快照策略的时间必须与 RepeatWeekdays 对应的创建周期相一致
TimePoints *[]int `json:"time_points"`
TimePoints *[]int `json:"time_points"`
}
func (self *SSnapshotPolicyUpdateInput) Validate() error {
@@ -156,18 +138,12 @@ func (self *SSnapshotPolicyUpdateInput) Validate() error {
}
type SnapshotPolicyDisksInput struct {
// 磁盘ID列表
// 快照策略类型需要时disk
Disks []string `json:"disk"`
}
type SnapshotPolicyResourcesInput struct {
// 绑定的资源列表
// 目前仅支持绑定主机
Resources []struct {
// 绑定资源ID
Id string `json:"id"`
// server: 主机, disk: 磁盘
Id string `json:"id"`
Type string `json:"type"`
} `json:"resources"`
}

View File

@@ -32,13 +32,13 @@ type SSLCertificateCreateInput struct {
DnsZoneId string `json:"dns_zone_id"`
Sans string `json:"sans"`
Province string `json:"province"`
Common string `json:"common"`
Country string `json:"country"`
City string `json:"city"`
OrgName string `json:"org_name"`
Certificate string `json:"certificate"`
PrivateKey string `json:"private_key"`
Province string
Common string
Country string
City string
OrgName string
Certificate string
PrivateKey string
}
type SSLCertificateDetails struct {

View File

@@ -23,11 +23,11 @@ import (
)
type StorageUsage struct {
HostCount int `json:"host_count"`
DiskCount int `json:"disk_count"`
SnapshotCount int `json:"snapshot_count"`
Used int64 `json:"used"`
Wasted int64 `json:"wasted"`
HostCount int
DiskCount int
SnapshotCount int
Used int64
Wasted int64
}
func (self StorageUsage) IsZero() bool {
@@ -84,14 +84,14 @@ type StorageCreateInput struct {
AutoCacheImages *bool `json:"auto_cache_images"`
// swagger:ignore
MonHost string `json:"mon_host"`
MonHost string
// ceph使用的pool, storage_type为 rbd 时,此参数为必传项
// example: rbd
RbdPool string `json:"rbd_pool"`
// swagger:ignore
Pool string `json:"pool"`
Pool string
// ceph集群密码,若ceph集群开启cephx认证,此参数必传
// 可在ceph集群主机的/etc/ceph/ceph.client.admin.keyring文件中找到
@@ -99,12 +99,12 @@ type StorageCreateInput struct {
RbdKey string `json:"rbd_key"`
// swagger:ignore
Key string `json:"key"`
Key string
RbdTimeoutInput
// swagger:ignore
ClientMountTimeout int `json:"client_mount_timeout"`
ClientMountTimeout int
// swagger:ignore
StorageConf *jsonutils.JSONDict
@@ -120,10 +120,10 @@ type StorageCreateInput struct {
// swagger:ignore
HardwareInfo *StorageHardwareInfo `json:"hardware_info"`
// CLVM VG Name
CLVMVgName string `json:"clvm_vg_name"`
CLVMVgName string
// SLVM VG Name
SLVMVgName string `json:"slvm_vg_name"`
Lvmlockd bool `json:"lvmlockd"`
SLVMVgName string
Lvmlockd bool
}
type RbdTimeoutInput struct {
@@ -132,14 +132,14 @@ type RbdTimeoutInput struct {
RbdRadosMonOpTimeout int `json:"rbd_rados_mon_op_timeout"`
// swagger:ignore
RadosMonOpTimeout int `json:"rados_mon_op_timeout"`
RadosMonOpTimeout int
// ceph osd 操作超时时间, 单位秒
// default: 1200
RbdRadosOsdOpTimeout int `json:"rbd_rados_osd_op_timeout"`
// swagger:ignore
RadosOsdOpTimeout int `json:"rados_osd_op_timeout"`
RadosOsdOpTimeout int
// ceph CephFS挂载超时时间, 单位秒
// default: 120
@@ -160,10 +160,10 @@ type SStorageCapacityInfo struct {
}
type StorageHost struct {
Id string `json:"id"`
Name string `json:"name"`
Status string `json:"status"`
HostStatus string `json:"host_status"`
Id string
Name string
Status string
HostStatus string
}
type StorageDetails struct {
@@ -255,13 +255,13 @@ type StorageUpdateInput struct {
RbdTimeoutInput
// swagger:ignore
StorageConf *jsonutils.JSONDict `json:"storage_conf"`
StorageConf *jsonutils.JSONDict
UpdateStorageConf bool `json:"update_storage_conf"`
UpdateStorageConf bool
// swagger:ignore
HardwareInfo *StorageHardwareInfo `json:"hardware_info"`
MasterHost string `json:"master_host"`
MasterHost string
}
type RbdStorageConf struct {

View File

@@ -49,50 +49,49 @@ type StoragecacheListInput struct {
type UncacheImageInput struct {
// 镜像ID
ImageId string `json:"image_id"`
// swagger:ignore
// swagger: ignore
StoragecacheId string `json:"storagecache_id"`
DeactivateImage *bool `json:"deactivate_image"`
}
type CacheImageInput struct {
// swagger:ignore
Image string `json:"image" yunion-deprecated-by:"image_id"`
ImageId string `json:"image_id"`
IsForce bool `json:"is_force"`
Format string `json:"format"`
// swagger:ignore
// swagger: ignore
Zone string `json:"zone"`
// swagger:ignore
// swagger: ignore
OsType string `json:"os_type"`
// swagger:ignore
// swagger: ignore
OsArch string `json:"os_arch"`
// swagger:ignore
// swagger: ignore
OsDistribution string `json:"os_distribution"`
// swagger:ignore
// swagger: ignore
OsFullVersion string `json:"os_full_version"`
// swagger:ignore
// swagger: ignore
OsVersion string `json:"os_version"`
// swagger:ignore
// swagger: ignore
ImageName string `json:"image_name"`
// swagger:ignore
// swagger: ignore
ServerId string `json:"server_id"`
// swagger:ignore
// swagger: ignore
ParentTaskId string `json:"parent_task_id"`
// swagger:ignore
// swagger: ignore
SourceHostId string `json:"source_host_id"`
// swagger:ignore
// swagger: ignore
SrcUrl string `json:"src_url"`
// swagger:ignore
// swagger: ignore
StoragecacheId string `json:"storagecache_id"`
// swagger:ignore
// swagger: ignore
Checksum string `json:"checksum"`
// swagger:ignore
// swagger: ignore
SkipChecksumIfExists bool `json:"skip_checksum_if_exists"`
// swagger:ignore
// swagger: ignore
PreCache bool `json:"pre_cache"`
}

Some files were not shown because too many files have changed in this diff Show More