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 1: Alpha Phase — Overview #148

Open
28 of 97 tasks
jimehk opened this issue Oct 25, 2024 · 0 comments
Open
28 of 97 tasks

Milestone 1: Alpha Phase — Overview #148

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

Comments

@jimehk
Copy link
Contributor

jimehk commented Oct 25, 2024

The goal is to nail down some of the fundamentals of how the provider is used, add support for a few more of the essential resources, while expanding functionality for some of the existing ones.

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 Alpha Phase milestone.

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

Overarching

  • Support for multiple data centers — Deprecate the data_center provider option, and add a data_center_id property to relevant resources and data sources, initially this should be optional with a warning if not set, but later it will become required. This is not a insignificant refactor, but shouldn't be super painful as internally everything already uses a globally provided Data Center. I believe the sooner we start showing deprecation warnings for anyone using the data_center provider option, or not setting data_center_id on resources that require it, the better.
  • Deprecate the organization provider option which accepts a org sub-domain, in favor of a new organization_id provider option, and error if neither option is provided. This should make the provider more stable, as the sub-domain is freely editable by org admins at any time.
  • Support for multiple organizations — Add optional organization_id property to relevant resources and data sources, similar to what we're planning with data_center_id, but while keeping the provider level organization_id as the default if the resource definition itself does not specify a organization_id.

Resources

  • Address Lists
    • Basic management
    • Add optional organization_id property.
    • Inline entries management via the bulk update API endpoint to avoid needing to make separate API calls for each entry, as some lists have hundreds of entries.
  • Address List Entries
  • Disk Backup Policies
    • Basic management
    • Can be assigned to either a virtual machine or to a specific disk.
  • File Storage Volumes
    • Basic management
    • Add optional data_center_id property, showing a warning if not set.
    • Add optional organization_id property.
  • DNS Zones
    • Basic management
    • Add optional organization_id property.
  • DNS Records
    • Basic management
  • IP Addresses
    • Basic management
    • Add optional data_center_id property
    • Showing a warning if neither network_id or data_center_id is set, as it then falls back to the globally set data center in the provider options.
    • Add optional organization_id property.
  • Load Balancers
    • Basic management
    • Support managing backend weights
    • Add optional data_center_id property, showing a warning if not set.
    • Add optional organization_id property.
  • Load Balancer Rules
    • Basic management
    • Support for assigning to Load Balancers
  • SSH Keys (for an organization)
    • Basic management — Requires a new get by ID/Fingerprint Core API endpoint as we only have a create, list and delete endpoints right now.
    • Add optional organization_id property.
  • Security Groups
    • Basic management
    • Add optional organization_id property.
    • Deprecate/remove in-line rule management feature to align with the load balancer resource, and to make things simpler when migrating to the v6 provider.
  • Security Group Rules
    • Basic management
    • Assignment to security groups
  • Tags
    • Basic management
    • Add optional organization_id property.
  • Virtual Machines
    • Basic management
    • Specify Disk Template and options for it
    • Specify network speed profile
    • Note: These changes could do with some discussion around our non-buildspec based API endpoint. Possibly we would want to enhance said API endpoint with the same kind of features as listed here, which may make implementation here simpler.
    • Shutdown/Start VMs
    • Add optional data_center_id property, showing a warning if not set.
    • Add optional organization_id property.
    • Add vcpu_count and memory_in_gb read-only properties.
    • Custom disks and disk sizes
      • Is supported
      • Update disk properties to more closely match the disks property on the Build Virtual Machine API endpoint.
    • SSH Key management, with options for:
      • All org keys
      • Specific org keys by ID or Fingerprint
      • All keys of org users
      • All keys of specific users by User ID
    • IP address changes
      • Deprecate ip_address_ids in favor of boolean assign_ipv4_address and assign_ipv6_address optional attributes which both default to true.
      • Add extra_ip_address_ids, which are used together with the katapult_ip resource to add/manage multiple IPs on a VM. To have full exact control of all IPs, the assign_ipv4_address and assign_ipv6_address properties need to both be set to false.
      • Make sure old and new IP related properties conflict with the network_interfaces property planned in Milestone 0: Quick Wins — Overview #147, as using network_interfaces fully takes over all network/IP management.

Data Sources

  • Data Centers
    • Get by id
    • Get by permalink
    • Get list
  • Disk Backup Policies
    • Get list (global for org, for VM, or for Disk)
    • Get by id
  • Disk Templates
  • DNS Zones
    • Get list
    • Get by id
    • Get by name
  • DNS Records
    • Get list
    • Get by id
    • Get by name
  • File Storage Volumes
  • IP Addresses
  • Load Balancers
  • Load Balancer Rules
  • Network Speed Profiles
  • Security Groups
  • Security Group Rules
  • SSH Keys (for an organization)
    • Get list
    • Get by id (requires new API endpoint)
    • Get by fingerprint (requires new API endpoint)
  • Tags
    • Get list
    • Get by id
    • Get by name (requires an update to the API)
  • Virtual Machines
    • Add vcpu_count and memory_in_gb read-only properties.
  • Virtual Machine Groups
  • Virtual Machine Packages
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