compute CDM include all instances

https://blueprints.launchpad.net/watcher/+spec/compute-cdm-include-all-instances

Problem description

When building compute CDM, we will exclude the instances excluded by the scope. It has terrible impact to Watcher.

To workload balance and server consolidation, the excluded instances in the scope are not added into the workload. So it would get incorrectly workload of the compute nodes, and execute unreasonbale migrations.

To server consolidation, it would disable the nodes which still have excluded instances running.

Use Cases

As an end user, I want Watcher to take excluded instances into account during workload calculations but not migrate excluded instances.

Proposed change

Watcher should have a whole scope of the cluster, include all instances. So it would get the correct workload of the nodes, and make the correct optimization.

Compute CDM in Watcher should has a whole scope, include all instances. It needs to be clear which instances are exclude and which are not.

  • We can add “watcher_exclude” field to “Instance” resource to distinguish them, as following.

    class Instance(compute_resource.ComputeResource):
    fields = {

    “watcher_exclude”: wfields.BooleanField(default=False), “state”: wfields.StringField(default=InstanceState.ACTIVE.value), …

    }

    When building compute CDM, set the ‘watcher_exclude’ flag ‘True’ if the instance is excluded by the scope.

Alternatives

None

Data model impact

None

REST API impact

None

Security impact

None

Notifications impact

None

Other end user impact

None

Performance Impact

None

Other deployer impact

None

Developer impact

None

Implementation

Assignee(s)

Primary assignee: sue

Work Items

  • Add and identify excluded instances in compute CDM

  • Adjust workload balance and server consolidation, when calculating workload of the compute nodes and generating solutions

Dependencies

Testing

Unit test

Documentation Impact

None

History

None