Coder Social home page Coder Social logo

ironcore-dev / machine-controller-manager-provider-ironcore Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 2.0 497 KB

Gardener machine controller manager provider for IronCore

Home Page: https://github.com/ironcore-dev

License: Apache License 2.0

Go 85.95% Dockerfile 1.58% Makefile 7.99% Shell 0.50% Smarty 3.99%
gardener node-management

machine-controller-manager-provider-ironcore's People

Contributors

afritzler avatar ashughorla avatar dependabot[bot] avatar florinpeter avatar rohit-0505 avatar sujeet01 avatar ushabelgur avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

machine-controller-manager-provider-ironcore's Issues

Improve `Provider` spec for `Machine`, `Volume` and `NetworkInterface` creation

Summary

Currently our MCM provider spec is basically a copy of the onmetal-api Machine spec. That will be not sufficient moving forward as we need an effective provide spec from which the following resources can be created:

  • Machine matching the required machine type
  • Volume containing the correct image and resource requirements
  • NetworkInterface containing the correct Network ref and IP allocation using a present Prefix

Definition of done

All of the above resources are correctly created by the driver. A suite test ensuring the correct behaviour.

Make DNS server configurable in `MachineClass`

Summary

Extend the existing ProviderSpec with a dnsServers field which allows the configuration of custom DNS servers. The result of this should be rendered into the Machine ignition to configure the resolvd:

    - path: /etc/systemd/resolved.conf.d/dns.conf
      mode: 0644
      contents:
        inline: |
          [Resolve]
          DNS=x.x.x.x
          DNS=y.y.y.y

Definition of done

  • Extend the ProviderSpec with a dnsServers field
  • Add validation to ensure the list of DNS servers are valid IP addresses
  • Ensure the correct behaviour by providing the corresponding unit tests

Implement `GetVolumeIDs` method

Summary

The GetVolumeIDs method in the MCM driver returns a list of Volumes for which the provider (onmetal) is responsible. Here is the example description which is part of the GCP MCM implementation:

// GetVolumeIDs returns a list of Volume IDs for all PV Specs for whom an provider volume was found
//
// REQUEST PARAMETERS (driver.GetVolumeIDsRequest)
// PVSpecList            bytes(blob)         PVSpecsList is a list PV specs for whom volume-IDs are required. Plugin should parse this raw data into pre-defined list of PVSpecs.
//
// RESPONSE PARAMETERS (driver.GetVolumeIDsResponse)
// VolumeIDs             repeated string     VolumeIDs is a repeated list of VolumeIDs.
//

https://github.com/gardener/machine-controller-manager-provider-gcp/blob/master/pkg/gcp/machine_controller.go#L216

In our case we need a similar functionality which returns all relevant Volumes derived from a given list of PVCs.

Definiton of done

Implement the corresponding GetVolumeIDs method. A suite test should cover the correct behaviour by creating a corresponding set of Volumes and PVCs.

/ref @Rohit-0505

Project rename to `ironcore`

Summary

Renaming tasks after project move:

  • Ensure all build artefacts are prefixed with ironcore
  • Ensure that all deployment yamls have the ironcore naming scheme
  • Ensure that github.com/ironcore-dev/controller-utils is used and all imports are changed accordingly
  • Ensure that github.com/ironcore-dev/ironcore is used and all imports are changed accordingly
  • Ensure that ironcore is used in the Makefile
  • Ensure that ironcore is used in all docs and README files

Move `SampleIgnition` to `internal` pacakge

Summary

Move the SampleIgnition in the create machine method (https://github.com/onmetal/machine-controller-manager-provider-onmetal/blob/main/pkg/onmetal/create_machine_test.go#L40) and move it to the internal package.

Also use here a map[string]interface{} and serialize it whenever it is needed. This will keep the code clean and more readable. Also extending the SampleIgnition will be more intuitive as we don't have to render it first via butane or fiddle around in the []byte slice.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.