<p dir="auto">Forked from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="146874772" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/24038" data-hovercard-type="pull_request" data-hovercard-url="/kubernetes/kubernetes/pull/24038/hovercard?comment_id=215610094&amp;comment_type=issue_comment" href="https://github.com/kubernetes/kubernetes/pull/24038#issuecomment-215610094">#24038 (comment)</a></p>
<p dir="auto">We are adding federation scheduler and controller manager as per the plan in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="144745292" data-permission-text="Title is private" data-url="https://github.com/kubernetes/kubernetes/issues/23653" data-hovercard-type="issue" data-hovercard-url="/kubernetes/kubernetes/issues/23653/hovercard" href="https://github.com/kubernetes/kubernetes/issues/23653">#23653</a>.</p>
<p dir="auto">There is obviously some common code that is shared with kubernetes controller manager and kubernetes scheduler.<br>
We want to pull out that code into libraries to enable code reuse rather than having to duplicate code.</p>
<p dir="auto">We need to figure out the right name and directory structure for such libraries.</p>
<p dir="auto">cc <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidopp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidopp">@davidopp</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/madhusudancs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/madhusudancs">@madhusudancs</a> @kubernetes/goog-control-plane @kubernetes/sig-cluster-federation</p>
<p dir="auto">According to this page:<br>
<a href="https://github.com/GoogleCloudPlatform/kubernetes/blob/5ef34bf52311901b997119cc49eff944c610081b/pkg/api/v1beta3/types.go">https://github.com/GoogleCloudPlatform/kubernetes/blob/5ef34bf52311901b997119cc49eff944c610081b/pkg/api/v1beta3/types.go</a></p>
<p dir="auto">"PortalIP is usually assigned by the master. If specified by the user<br>
// we will try to respect it or else fail the request. This field can<br>
// not be changed by updates."<br>
PortalIP string <code class="notranslate">json:"portalIP,omitempty"</code></p>
<ol dir="auto">
<li>just to clarify the above - it means that user is allowed to assign it during creation of service, but not during update service - correct? why update is not supported as well?</li>
<li>what are the considerations for "we will try to respect it" - what validations are made (Except for addr already in use) ?</li>
<li>what exact error is returned when it can't be assigned?</li>
</ol>