Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Milestone 2: Beta Phase — Overview #149

Open
35 tasks
jimehk opened this issue Oct 25, 2024 · 0 comments
Open
35 tasks

Milestone 2: Beta Phase — Overview #149

jimehk opened this issue Oct 25, 2024 · 0 comments
Milestone

Comments

@jimehk
Copy link
Contributor

jimehk commented Oct 25, 2024

The beta phase will see more features fleshed out and finalized. This outline may change a lot as we approach and enter the Alpha Phase and learn from it.

This issue serves as a high-level outline/overview of the milestone, with individual issues to be spun out as sub-issues here, and added to the Beta Phase milestone.

Below is an initial draft proposal of changes for the beta phase, so it may change, and we welcome feedback and discussion.

Overarching

  • Remove support for deprecated data_center provider option.
  • Change all optional data_center_id properties to required on resources and data sources which used the global provider data_center option as a fallback when no value was provided.
  • Remove support for deprecated organization provider option.
  • Mark organization_id provider option as required.

Resources

  • API Tokens (for an organization)
    • Basic management
  • Disks
    • Basic management
  • IP Addresses
    • Require one of data_center_id or network_id to be set, as the data center can be derived from the network.
  • Organization Settings
    • Manage basic settings:
      • name
      • sub_domain
      • time_zone
      • Require 2FA for all users
      • Custom infrastructure domain
  • Security Groups
    • Tag association improvements — Refer to tags by name rather than their ID, but using a tag: prefix. So instead of a record ID of tag_bVJjelJCB2HyKShU, we'd use tag:web. This change would be good to get added to the Core API as well.
  • Virtual Machines
    • Manage disks based on Disk IDs from the new Disks resource support. Should work nicely with existing custom disk sizes feature.
    • VM package upgrade/downgrade — Upgrades should be easy as they can be done live, but downgrades require shutdown, resize, and start. So we need to consider how best to expose the shutdown requirement in Terraform so that users don't get surprised. Maybe a custom attribute that must be set to true called allow_reboot_for_package_downgrade. We should look at what other providers have done here.
    • Manage GPU — This will most likely need a "status" style read-only property to indicate the currently assigned GPU. When a GPU type is set, the GPU is not actually attached to the VM until the next time it starts, so the set/desired GPU does not always match the currently attached GPU.
    • SSH Key management options
      • Continuous SSH key management — Will depend on how the feature looks once the new cron poll-based solution is fully rolled out. Possibly it's just a disk template option, so no additional work is needed on the Terraform side.
    • Disks managed as separate katapult_disk resources as an alternative to the in-line disk definitions.

Data Sources

  • Disks
    • Get list
    • Get by id
  • Disk I/O Profiles
    • Get list
  • Organization
    • Includes values of basic settings and nameservers (used for DNS Zones), possibly split out as separate data sources to get specific sets of organization details.
  • Organization Limits
    • Get limits
  • GPU Types — Useful when managing GPUs on a VM.
    • Get list
    • Get list for specific Data Center
    • Get by id
    • Get by permalink
@jimehk jimehk added this to the Beta Phase milestone Oct 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant