| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- // Copyright 2019 Yunion
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- package mcclient
- type IServiceCatalog interface {
- Len() int
- getServiceURL(service, region, zone, endpointType string) (string, error)
- getServiceURLs(service, region, zone, endpointType string) ([]string, error)
- GetInternalServices(region string) []string
- GetExternalServices(region string) []ExternalService
- GetServicesByInterface(region string, infType string) []ExternalService
- }
- type IServiceCatalogChangeListener interface {
- OnServiceCatalogChange(catalog IServiceCatalog)
- }
- type cliTask struct {
- cli *Client
- l IServiceCatalogChangeListener
- catalog IServiceCatalog
- taskType string
- }
- func (t *cliTask) Run() {
- switch t.taskType {
- case "GetServiceCatalog":
- t.l.OnServiceCatalogChange(t.cli.GetServiceCatalog())
- case "OnServiceCatalogChange":
- for i := range t.cli.catalogListeners {
- t.cli.catalogListeners[i].OnServiceCatalogChange(t.catalog)
- }
- }
- }
- func (t *cliTask) Dump() string {
- return ""
- }
- func (cli *Client) RegisterCatalogListener(l IServiceCatalogChangeListener) {
- cli.catalogListeners = append(cli.catalogListeners, l)
- task := &cliTask{
- cli: cli,
- l: l,
- taskType: "GetServiceCatalog",
- }
- if cli.GetServiceCatalog() != nil {
- listenerWorker.Run(task, nil, nil)
- }
- }
- func (cli *Client) SetServiceCatalog(catalog IServiceCatalog) {
- cli._serviceCatalog = catalog
- task := &cliTask{
- cli: cli,
- catalog: catalog,
- taskType: "OnServiceCatalogChange",
- }
- listenerWorker.Run(task, nil, nil)
- }
- func (this *Client) GetServiceCatalog() IServiceCatalog {
- return this._serviceCatalog
- }
- func CatalogGetServiceURL(catalog IServiceCatalog, service, region, zone, endpointType string) (string, error) {
- return catalog.getServiceURL(service, region, zone, endpointType)
- }
- func CatalogGetServiceURLs(catalog IServiceCatalog, service, region, zone, endpointType string) ([]string, error) {
- return catalog.getServiceURLs(service, region, zone, endpointType)
- }
|