Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
origin-web-common
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Java-于龙
origin-web-common
Commits
329b46fe
Commit
329b46fe
authored
Jul 27, 2017
by
Jeffrey Phillips
Committed by
GitHub
Jul 27, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #131 from jeff-phillips-18/bind
Add BindingService utility functions
parents
7241f657
3d4d222f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
303 additions
and
60 deletions
+303
-60
bower.json
bower.json
+1
-0
origin-web-common-services.js
dist/origin-web-common-services.js
+90
-18
origin-web-common.js
dist/origin-web-common.js
+90
-18
origin-web-common.min.js
dist/origin-web-common.min.js
+32
-6
bindService.js
src/services/bindService.js
+90
-18
No files found.
bower.json
View file @
329b46fe
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
"hawtio-extension-service"
:
"~2.0.2"
,
"hawtio-extension-service"
:
"~2.0.2"
,
"hopscotch"
:
"~0.2.7"
,
"hopscotch"
:
"~0.2.7"
,
"jquery"
:
"~3.2.1"
,
"jquery"
:
"~3.2.1"
,
"kubernetes-label-selector"
:
"~2.0.0"
,
"lodash"
:
"~4.17.4"
,
"lodash"
:
"~4.17.4"
,
"patternfly"
:
"~3.25.1"
,
"patternfly"
:
"~3.25.1"
,
"uri.js"
:
"~1.18.0"
"uri.js"
:
"~1.18.0"
...
...
dist/origin-web-common-services.js
View file @
329b46fe
...
@@ -1085,6 +1085,91 @@ angular.module("openshiftCommonServices")
...
@@ -1085,6 +1085,91 @@ angular.module("openshiftCommonServices")
return
binding
;
return
binding
;
};
};
var
isServiceBindable
=
function
(
serviceInstance
,
serviceClasses
)
{
var
serviceClass
=
getServiceClassForInstance
(
serviceInstance
,
serviceClasses
);
// If being deleted, it is not bindable
if
(
_
.
get
(
serviceInstance
,
'metadata.deletionTimestamp'
))
{
return
false
;
}
if
(
!
serviceClass
)
{
return
!!
serviceInstance
;
}
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
);
var
planBindable
=
_
.
get
(
plan
,
'bindable'
);
if
(
planBindable
===
true
)
{
return
true
;
}
if
(
planBindable
===
false
)
{
return
false
;
}
// If `plan.bindable` is not set, fall back to `serviceClass.bindable`.
return
serviceClass
.
bindable
;
};
var
getPodPresetSelectorsForBindings
=
function
(
bindings
)
{
// Build a map of pod preset selectors by binding name.
var
podPresetSelectors
=
{};
_
.
each
(
bindings
,
function
(
binding
)
{
var
podPresetSelector
=
_
.
get
(
binding
,
'spec.alphaPodPresetTemplate.selector'
);
if
(
podPresetSelector
)
{
podPresetSelectors
[
binding
.
metadata
.
name
]
=
new
LabelSelector
(
podPresetSelector
);
}
});
return
podPresetSelectors
;
};
var
getBindingsForResource
=
function
(
bindings
,
apiObject
)
{
var
podPresetSelectors
=
getPodPresetSelectorsForBindings
(
bindings
);
// Create a selector for the potential binding target to check if the
// pod preset covers the selector.
var
applicationSelector
=
new
LabelSelector
(
_
.
get
(
apiObject
,
'spec.selector'
));
var
resourceBindings
=
[];
// Look at each pod preset selector to see if it covers this API object selector.
_
.
each
(
podPresetSelectors
,
function
(
podPresetSelector
,
bindingName
)
{
if
(
podPresetSelector
.
covers
(
applicationSelector
))
{
// Keep a map of the target UID to the binding and the binding to
// the target. We want to show bindings both in the "application"
// object rows and the service instance rows.
resourceBindings
.
push
(
bindings
[
bindingName
]);
}
});
return
resourceBindings
;
};
var
filterBindableServiceInstances
=
function
(
serviceInstances
,
serviceClasses
)
{
if
(
!
serviceInstances
&&
!
serviceClasses
)
{
return
null
;
}
return
_
.
filter
(
serviceInstances
,
function
(
serviceInstance
)
{
return
isServiceBindable
(
serviceInstance
,
serviceClasses
);
});
};
var
sortServiceInstances
=
function
(
serviceInstances
,
serviceClasses
)
{
if
(
!
serviceInstances
&&
!
serviceClasses
)
{
return
null
;
}
return
_
.
sortBy
(
serviceInstances
,
function
(
item
)
{
return
_
.
get
(
serviceClasses
,
[
item
.
spec
.
serviceClassName
,
'externalMetadata'
,
'displayName'
])
||
item
.
spec
.
serviceClassName
;
},
function
(
item
)
{
return
_
.
get
(
item
,
'metadata.name'
,
''
);
}
);
};
return
{
return
{
bindingResource
:
bindingResource
,
bindingResource
:
bindingResource
,
getServiceClassForInstance
:
getServiceClassForInstance
,
getServiceClassForInstance
:
getServiceClassForInstance
,
...
@@ -1103,24 +1188,11 @@ angular.module("openshiftCommonServices")
...
@@ -1103,24 +1188,11 @@ angular.module("openshiftCommonServices")
});
});
},
},
isServiceBindable
:
function
(
serviceInstance
,
serviceClasses
)
{
isServiceBindable
:
isServiceBindable
,
var
serviceClass
=
getServiceClassForInstance
(
serviceInstance
,
serviceClasses
);
getPodPresetSelectorsForBindings
:
getPodPresetSelectorsForBindings
,
if
(
!
serviceClass
)
{
getBindingsForResource
:
getBindingsForResource
,
return
!!
serviceInstance
;
filterBindableServiceInstances
:
filterBindableServiceInstances
,
}
sortServiceInstances
:
sortServiceInstances
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
);
var
planBindable
=
_
.
get
(
plan
,
'bindable'
);
if
(
planBindable
===
true
)
{
return
true
;
}
if
(
planBindable
===
false
)
{
return
false
;
}
// If `plan.bindable` is not set, fall back to `serviceClass.bindable`.
return
serviceClass
.
bindable
;
}
};
};
});
});
;
'use strict'
;
;
'use strict'
;
...
...
dist/origin-web-common.js
View file @
329b46fe
...
@@ -2851,6 +2851,91 @@ angular.module("openshiftCommonServices")
...
@@ -2851,6 +2851,91 @@ angular.module("openshiftCommonServices")
return
binding
;
return
binding
;
};
};
var
isServiceBindable
=
function
(
serviceInstance
,
serviceClasses
)
{
var
serviceClass
=
getServiceClassForInstance
(
serviceInstance
,
serviceClasses
);
// If being deleted, it is not bindable
if
(
_
.
get
(
serviceInstance
,
'metadata.deletionTimestamp'
))
{
return
false
;
}
if
(
!
serviceClass
)
{
return
!!
serviceInstance
;
}
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
);
var
planBindable
=
_
.
get
(
plan
,
'bindable'
);
if
(
planBindable
===
true
)
{
return
true
;
}
if
(
planBindable
===
false
)
{
return
false
;
}
// If `plan.bindable` is not set, fall back to `serviceClass.bindable`.
return
serviceClass
.
bindable
;
};
var
getPodPresetSelectorsForBindings
=
function
(
bindings
)
{
// Build a map of pod preset selectors by binding name.
var
podPresetSelectors
=
{};
_
.
each
(
bindings
,
function
(
binding
)
{
var
podPresetSelector
=
_
.
get
(
binding
,
'spec.alphaPodPresetTemplate.selector'
);
if
(
podPresetSelector
)
{
podPresetSelectors
[
binding
.
metadata
.
name
]
=
new
LabelSelector
(
podPresetSelector
);
}
});
return
podPresetSelectors
;
};
var
getBindingsForResource
=
function
(
bindings
,
apiObject
)
{
var
podPresetSelectors
=
getPodPresetSelectorsForBindings
(
bindings
);
// Create a selector for the potential binding target to check if the
// pod preset covers the selector.
var
applicationSelector
=
new
LabelSelector
(
_
.
get
(
apiObject
,
'spec.selector'
));
var
resourceBindings
=
[];
// Look at each pod preset selector to see if it covers this API object selector.
_
.
each
(
podPresetSelectors
,
function
(
podPresetSelector
,
bindingName
)
{
if
(
podPresetSelector
.
covers
(
applicationSelector
))
{
// Keep a map of the target UID to the binding and the binding to
// the target. We want to show bindings both in the "application"
// object rows and the service instance rows.
resourceBindings
.
push
(
bindings
[
bindingName
]);
}
});
return
resourceBindings
;
};
var
filterBindableServiceInstances
=
function
(
serviceInstances
,
serviceClasses
)
{
if
(
!
serviceInstances
&&
!
serviceClasses
)
{
return
null
;
}
return
_
.
filter
(
serviceInstances
,
function
(
serviceInstance
)
{
return
isServiceBindable
(
serviceInstance
,
serviceClasses
);
});
};
var
sortServiceInstances
=
function
(
serviceInstances
,
serviceClasses
)
{
if
(
!
serviceInstances
&&
!
serviceClasses
)
{
return
null
;
}
return
_
.
sortBy
(
serviceInstances
,
function
(
item
)
{
return
_
.
get
(
serviceClasses
,
[
item
.
spec
.
serviceClassName
,
'externalMetadata'
,
'displayName'
])
||
item
.
spec
.
serviceClassName
;
},
function
(
item
)
{
return
_
.
get
(
item
,
'metadata.name'
,
''
);
}
);
};
return
{
return
{
bindingResource
:
bindingResource
,
bindingResource
:
bindingResource
,
getServiceClassForInstance
:
getServiceClassForInstance
,
getServiceClassForInstance
:
getServiceClassForInstance
,
...
@@ -2869,24 +2954,11 @@ angular.module("openshiftCommonServices")
...
@@ -2869,24 +2954,11 @@ angular.module("openshiftCommonServices")
});
});
},
},
isServiceBindable
:
function
(
serviceInstance
,
serviceClasses
)
{
isServiceBindable
:
isServiceBindable
,
var
serviceClass
=
getServiceClassForInstance
(
serviceInstance
,
serviceClasses
);
getPodPresetSelectorsForBindings
:
getPodPresetSelectorsForBindings
,
if
(
!
serviceClass
)
{
getBindingsForResource
:
getBindingsForResource
,
return
!!
serviceInstance
;
filterBindableServiceInstances
:
filterBindableServiceInstances
,
}
sortServiceInstances
:
sortServiceInstances
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
);
var
planBindable
=
_
.
get
(
plan
,
'bindable'
);
if
(
planBindable
===
true
)
{
return
true
;
}
if
(
planBindable
===
false
)
{
return
false
;
}
// If `plan.bindable` is not set, fall back to `serviceClass.bindable`.
return
serviceClass
.
bindable
;
}
};
};
}]);
}]);
;
'use strict'
;
;
'use strict'
;
...
...
dist/origin-web-common.min.js
View file @
329b46fe
...
@@ -1161,6 +1161,33 @@ matchLabels:appSelector
...
@@ -1161,6 +1161,33 @@ matchLabels:appSelector
name
:
relatedObjName
,
name
:
relatedObjName
,
selector
:
appSelector
selector
:
appSelector
}),
binding
;
}),
binding
;
},
isServiceBindable
=
function
(
serviceInstance
,
serviceClasses
)
{
var
serviceClass
=
getServiceClassForInstance
(
serviceInstance
,
serviceClasses
);
if
(
_
.
get
(
serviceInstance
,
"metadata.deletionTimestamp"
))
return
!
1
;
if
(
!
serviceClass
)
return
!!
serviceInstance
;
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
),
planBindable
=
_
.
get
(
plan
,
"bindable"
);
return
planBindable
===
!
0
?
!
0
:
planBindable
===
!
1
?
!
1
:
serviceClass
.
bindable
;
},
getPodPresetSelectorsForBindings
=
function
(
bindings
)
{
var
podPresetSelectors
=
{};
return
_
.
each
(
bindings
,
function
(
binding
)
{
var
podPresetSelector
=
_
.
get
(
binding
,
"spec.alphaPodPresetTemplate.selector"
);
podPresetSelector
&&
(
podPresetSelectors
[
binding
.
metadata
.
name
]
=
new
LabelSelector
(
podPresetSelector
));
}),
podPresetSelectors
;
},
getBindingsForResource
=
function
(
bindings
,
apiObject
)
{
var
podPresetSelectors
=
getPodPresetSelectorsForBindings
(
bindings
),
applicationSelector
=
new
LabelSelector
(
_
.
get
(
apiObject
,
"spec.selector"
)),
resourceBindings
=
[];
return
_
.
each
(
podPresetSelectors
,
function
(
podPresetSelector
,
bindingName
)
{
podPresetSelector
.
covers
(
applicationSelector
)
&&
resourceBindings
.
push
(
bindings
[
bindingName
]);
}),
resourceBindings
;
},
filterBindableServiceInstances
=
function
(
serviceInstances
,
serviceClasses
)
{
return
serviceInstances
||
serviceClasses
?
_
.
filter
(
serviceInstances
,
function
(
serviceInstance
)
{
return
isServiceBindable
(
serviceInstance
,
serviceClasses
);
})
:
null
;
},
sortServiceInstances
=
function
(
serviceInstances
,
serviceClasses
)
{
return
serviceInstances
||
serviceClasses
?
_
.
sortBy
(
serviceInstances
,
function
(
item
)
{
return
_
.
get
(
serviceClasses
,
[
item
.
spec
.
serviceClassName
,
"externalMetadata"
,
"displayName"
])
||
item
.
spec
.
serviceClassName
;
},
function
(
item
)
{
return
_
.
get
(
item
,
"metadata.name"
,
""
);
})
:
null
;
};
};
return
{
return
{
bindingResource
:
bindingResource
,
bindingResource
:
bindingResource
,
...
@@ -1173,12 +1200,11 @@ namespace:serviceInstance.metadata.namespace
...
@@ -1173,12 +1200,11 @@ namespace:serviceInstance.metadata.namespace
return
DataService
.
create
(
bindingResource
,
null
,
newBinding
,
context
);
return
DataService
.
create
(
bindingResource
,
null
,
newBinding
,
context
);
});
});
},
},
isServiceBindable
:
function
(
serviceInstance
,
serviceClasses
)
{
isServiceBindable
:
isServiceBindable
,
var
serviceClass
=
getServiceClassForInstance
(
serviceInstance
,
serviceClasses
);
getPodPresetSelectorsForBindings
:
getPodPresetSelectorsForBindings
,
if
(
!
serviceClass
)
return
!!
serviceInstance
;
getBindingsForResource
:
getBindingsForResource
,
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
),
planBindable
=
_
.
get
(
plan
,
"bindable"
);
filterBindableServiceInstances
:
filterBindableServiceInstances
,
return
planBindable
===
!
0
?
!
0
:
planBindable
===
!
1
?
!
1
:
serviceClass
.
bindable
;
sortServiceInstances
:
sortServiceInstances
}
};
};
}
]),
angular
.
module
(
"openshiftCommonServices"
).
factory
(
"Constants"
,
function
()
{
}
]),
angular
.
module
(
"openshiftCommonServices"
).
factory
(
"Constants"
,
function
()
{
var
constants
=
_
.
clone
(
window
.
OPENSHIFT_CONSTANTS
||
{}),
version
=
_
.
clone
(
window
.
OPENSHIFT_VERSION
||
{});
var
constants
=
_
.
clone
(
window
.
OPENSHIFT_CONSTANTS
||
{}),
version
=
_
.
clone
(
window
.
OPENSHIFT_VERSION
||
{});
...
...
src/services/bindService.js
View file @
329b46fe
...
@@ -74,6 +74,91 @@ angular.module("openshiftCommonServices")
...
@@ -74,6 +74,91 @@ angular.module("openshiftCommonServices")
return
binding
;
return
binding
;
};
};
var
isServiceBindable
=
function
(
serviceInstance
,
serviceClasses
)
{
var
serviceClass
=
getServiceClassForInstance
(
serviceInstance
,
serviceClasses
);
// If being deleted, it is not bindable
if
(
_
.
get
(
serviceInstance
,
'metadata.deletionTimestamp'
))
{
return
false
;
}
if
(
!
serviceClass
)
{
return
!!
serviceInstance
;
}
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
);
var
planBindable
=
_
.
get
(
plan
,
'bindable'
);
if
(
planBindable
===
true
)
{
return
true
;
}
if
(
planBindable
===
false
)
{
return
false
;
}
// If `plan.bindable` is not set, fall back to `serviceClass.bindable`.
return
serviceClass
.
bindable
;
};
var
getPodPresetSelectorsForBindings
=
function
(
bindings
)
{
// Build a map of pod preset selectors by binding name.
var
podPresetSelectors
=
{};
_
.
each
(
bindings
,
function
(
binding
)
{
var
podPresetSelector
=
_
.
get
(
binding
,
'spec.alphaPodPresetTemplate.selector'
);
if
(
podPresetSelector
)
{
podPresetSelectors
[
binding
.
metadata
.
name
]
=
new
LabelSelector
(
podPresetSelector
);
}
});
return
podPresetSelectors
;
};
var
getBindingsForResource
=
function
(
bindings
,
apiObject
)
{
var
podPresetSelectors
=
getPodPresetSelectorsForBindings
(
bindings
);
// Create a selector for the potential binding target to check if the
// pod preset covers the selector.
var
applicationSelector
=
new
LabelSelector
(
_
.
get
(
apiObject
,
'spec.selector'
));
var
resourceBindings
=
[];
// Look at each pod preset selector to see if it covers this API object selector.
_
.
each
(
podPresetSelectors
,
function
(
podPresetSelector
,
bindingName
)
{
if
(
podPresetSelector
.
covers
(
applicationSelector
))
{
// Keep a map of the target UID to the binding and the binding to
// the target. We want to show bindings both in the "application"
// object rows and the service instance rows.
resourceBindings
.
push
(
bindings
[
bindingName
]);
}
});
return
resourceBindings
;
};
var
filterBindableServiceInstances
=
function
(
serviceInstances
,
serviceClasses
)
{
if
(
!
serviceInstances
&&
!
serviceClasses
)
{
return
null
;
}
return
_
.
filter
(
serviceInstances
,
function
(
serviceInstance
)
{
return
isServiceBindable
(
serviceInstance
,
serviceClasses
);
});
};
var
sortServiceInstances
=
function
(
serviceInstances
,
serviceClasses
)
{
if
(
!
serviceInstances
&&
!
serviceClasses
)
{
return
null
;
}
return
_
.
sortBy
(
serviceInstances
,
function
(
item
)
{
return
_
.
get
(
serviceClasses
,
[
item
.
spec
.
serviceClassName
,
'externalMetadata'
,
'displayName'
])
||
item
.
spec
.
serviceClassName
;
},
function
(
item
)
{
return
_
.
get
(
item
,
'metadata.name'
,
''
);
}
);
};
return
{
return
{
bindingResource
:
bindingResource
,
bindingResource
:
bindingResource
,
getServiceClassForInstance
:
getServiceClassForInstance
,
getServiceClassForInstance
:
getServiceClassForInstance
,
...
@@ -92,23 +177,10 @@ angular.module("openshiftCommonServices")
...
@@ -92,23 +177,10 @@ angular.module("openshiftCommonServices")
});
});
},
},
isServiceBindable
:
function
(
serviceInstance
,
serviceClasses
)
{
isServiceBindable
:
isServiceBindable
,
var
serviceClass
=
getServiceClassForInstance
(
serviceInstance
,
serviceClasses
);
getPodPresetSelectorsForBindings
:
getPodPresetSelectorsForBindings
,
if
(
!
serviceClass
)
{
getBindingsForResource
:
getBindingsForResource
,
return
!!
serviceInstance
;
filterBindableServiceInstances
:
filterBindableServiceInstances
,
}
sortServiceInstances
:
sortServiceInstances
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
);
var
planBindable
=
_
.
get
(
plan
,
'bindable'
);
if
(
planBindable
===
true
)
{
return
true
;
}
if
(
planBindable
===
false
)
{
return
false
;
}
// If `plan.bindable` is not set, fall back to `serviceClass.bindable`.
return
serviceClass
.
bindable
;
}
};
};
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment