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
e25a7494
Commit
e25a7494
authored
Jul 26, 2017
by
Samuel Padgett
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update BindService for binding parameters
parent
d5ae6b45
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
252 additions
and
73 deletions
+252
-73
origin-web-common-services.js
dist/origin-web-common-services.js
+69
-19
origin-web-common.js
dist/origin-web-common.js
+69
-19
origin-web-common.min.js
dist/origin-web-common.min.js
+45
-16
bindService.js
src/services/bindService.js
+69
-19
No files found.
dist/origin-web-common-services.js
View file @
e25a7494
...
@@ -1031,6 +1031,9 @@ angular.module("openshiftCommonServices")
...
@@ -1031,6 +1031,9 @@ angular.module("openshiftCommonServices")
AuthService
,
AuthService
,
DataService
,
DataService
,
DNS1123_SUBDOMAIN_VALIDATION
)
{
DNS1123_SUBDOMAIN_VALIDATION
)
{
// The secret key this service uses for the parameters JSON blob when binding.
var
PARAMETERS_SECRET_KEY
=
'parameters'
;
var
bindingResource
=
{
var
bindingResource
=
{
group
:
'servicecatalog.k8s.io'
,
group
:
'servicecatalog.k8s.io'
,
resource
:
'bindings'
resource
:
'bindings'
...
@@ -1046,23 +1049,49 @@ angular.module("openshiftCommonServices")
...
@@ -1046,23 +1049,49 @@ angular.module("openshiftCommonServices")
return
_
.
find
(
serviceClass
.
plans
,
{
name
:
planName
});
return
_
.
find
(
serviceClass
.
plans
,
{
name
:
planName
});
};
};
var
getBindParameters
=
function
(
serviceInstance
,
serviceClass
)
{
var
generateName
=
$filter
(
'generateName'
);
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
);
var
generateSecretName
=
function
(
prefix
)
{
if
(
_
.
has
(
plan
,
[
'alphaBindingCreateParameterSchema'
,
'properties'
,
'template.openshift.io/requester-username'
]))
{
var
generateNameLength
=
5
;
return
AuthService
.
withUser
().
then
(
function
(
user
)
{
// Truncate the class name if it's too long to append the generated name suffix.
return
{
var
secretNamePrefix
=
_
.
truncate
(
prefix
,
{
'template.openshift.io/requester-username'
:
user
.
metadata
.
name
// `generateNameLength - 1` because we append a '-' and then a 5 char generated suffix
};
length
:
DNS1123_SUBDOMAIN_VALIDATION
.
maxlength
-
generateNameLength
-
1
,
omission
:
''
});
});
}
return
$q
.
when
({}
);
return
generateName
(
secretNamePrefix
,
generateNameLength
);
};
};
var
generateName
=
$filter
(
'generateName'
);
var
makeParametersSecret
=
function
(
secretName
,
parameters
,
binding
)
{
var
makeBinding
=
function
(
serviceInstance
,
application
,
parameters
)
{
var
secret
=
{
apiVersion
:
'v1'
,
kind
:
'Secret'
,
metadata
:
{
name
:
secretName
,
ownerReferences
:
[{
apiVersion
:
binding
.
apiVersion
,
kind
:
binding
.
kind
,
name
:
binding
.
metadata
.
name
,
uid
:
binding
.
metadata
.
uid
,
controller
:
false
,
// TODO: Change to true when garbage collection works with service
// catalog resources. Setting to true now results in a 403 Forbidden
// error creating the secret.
blockOwnerDeletion
:
false
}]
},
type
:
'Opaque'
,
stringData
:
{}
};
secret
.
stringData
[
PARAMETERS_SECRET_KEY
]
=
JSON
.
stringify
(
parameters
);
return
secret
;
};
var
makeBinding
=
function
(
serviceInstance
,
application
,
parametersSecretName
)
{
var
parametersSecretName
;
var
instanceName
=
serviceInstance
.
metadata
.
name
;
var
instanceName
=
serviceInstance
.
metadata
.
name
;
var
relatedObjName
=
generateName
(
_
.
truncate
(
instanceName
,
DNS1123_SUBDOMAIN_VALIDATION
.
maxlength
-
6
)
+
'-'
);
var
binding
=
{
var
binding
=
{
kind
:
'Binding'
,
kind
:
'Binding'
,
apiVersion
:
'servicecatalog.k8s.io/v1alpha1'
,
apiVersion
:
'servicecatalog.k8s.io/v1alpha1'
,
...
@@ -1073,12 +1102,17 @@ angular.module("openshiftCommonServices")
...
@@ -1073,12 +1102,17 @@ angular.module("openshiftCommonServices")
instanceRef
:
{
instanceRef
:
{
name
:
instanceName
name
:
instanceName
},
},
secretName
:
relatedObjName
secretName
:
generateSecretName
(
serviceInstance
.
metadata
.
name
+
'-credentials-'
)
}
}
};
};
if
(
!
_
.
isEmpty
(
parameters
))
{
if
(
parametersSecretName
)
{
binding
.
spec
.
parameters
=
parameters
;
binding
.
spec
.
parametersFrom
=
[{
secretKeyRef
:
{
name
:
parametersSecretName
,
key
:
PARAMETERS_SECRET_KEY
}
}];
}
}
var
appSelector
=
_
.
get
(
application
,
'spec.selector'
);
var
appSelector
=
_
.
get
(
application
,
'spec.selector'
);
...
@@ -1190,18 +1224,34 @@ angular.module("openshiftCommonServices")
...
@@ -1190,18 +1224,34 @@ angular.module("openshiftCommonServices")
return
{
return
{
bindingResource
:
bindingResource
,
bindingResource
:
bindingResource
,
getServiceClassForInstance
:
getServiceClassForInstance
,
getServiceClassForInstance
:
getServiceClassForInstance
,
getPlanForInstance
:
getPlanForInstance
,
// Create a binding for `serviceInstance`. If an `application` API object
// Create a binding for `serviceInstance`. If an `application` API object
// is specified, also create a pod preset for that application using its
// is specified, also create a pod preset for that application using its
// `spec.selector`. `serviceClass` is required to determine if any
// `spec.selector`. `serviceClass` is required to determine if any
// parameters need to be set when creating the binding.
// parameters need to be set when creating the binding.
bindService
:
function
(
serviceInstance
,
application
,
serviceClass
)
{
bindService
:
function
(
serviceInstance
,
application
,
serviceClass
,
parameters
)
{
return
getBindParameters
(
serviceInstance
,
serviceClass
).
then
(
function
(
parameters
)
{
var
parametersSecretName
;
var
newBinding
=
makeBinding
(
serviceInstance
,
application
,
parameters
);
if
(
!
_
.
isEmpty
(
parameters
))
{
parametersSecretName
=
generateSecretName
(
serviceInstance
.
metadata
.
name
+
'-bind-parameters-'
);
}
var
newBinding
=
makeBinding
(
serviceInstance
,
application
,
parametersSecretName
);
var
context
=
{
var
context
=
{
namespace
:
serviceInstance
.
metadata
.
namespace
namespace
:
serviceInstance
.
metadata
.
namespace
};
};
return
DataService
.
create
(
bindingResource
,
null
,
newBinding
,
context
);
var
promise
=
DataService
.
create
(
bindingResource
,
null
,
newBinding
,
context
);
if
(
!
parametersSecretName
)
{
return
promise
;
}
// Create the secret as well if the binding has parameters.
return
promise
.
then
(
function
(
binding
)
{
var
parametersSecret
=
makeParametersSecret
(
parametersSecretName
,
parameters
,
binding
);
return
DataService
.
create
(
"secrets"
,
null
,
parametersSecret
,
context
).
then
(
function
()
{
return
binding
;
});
});
});
},
},
...
...
dist/origin-web-common.js
View file @
e25a7494
...
@@ -2911,6 +2911,9 @@ angular.module("openshiftCommonServices")
...
@@ -2911,6 +2911,9 @@ angular.module("openshiftCommonServices")
AuthService
,
AuthService
,
DataService
,
DataService
,
DNS1123_SUBDOMAIN_VALIDATION
)
{
DNS1123_SUBDOMAIN_VALIDATION
)
{
// The secret key this service uses for the parameters JSON blob when binding.
var
PARAMETERS_SECRET_KEY
=
'parameters'
;
var
bindingResource
=
{
var
bindingResource
=
{
group
:
'servicecatalog.k8s.io'
,
group
:
'servicecatalog.k8s.io'
,
resource
:
'bindings'
resource
:
'bindings'
...
@@ -2926,23 +2929,49 @@ angular.module("openshiftCommonServices")
...
@@ -2926,23 +2929,49 @@ angular.module("openshiftCommonServices")
return
_
.
find
(
serviceClass
.
plans
,
{
name
:
planName
});
return
_
.
find
(
serviceClass
.
plans
,
{
name
:
planName
});
};
};
var
getBindParameters
=
function
(
serviceInstance
,
serviceClass
)
{
var
generateName
=
$filter
(
'generateName'
);
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
);
var
generateSecretName
=
function
(
prefix
)
{
if
(
_
.
has
(
plan
,
[
'alphaBindingCreateParameterSchema'
,
'properties'
,
'template.openshift.io/requester-username'
]))
{
var
generateNameLength
=
5
;
return
AuthService
.
withUser
().
then
(
function
(
user
)
{
// Truncate the class name if it's too long to append the generated name suffix.
return
{
var
secretNamePrefix
=
_
.
truncate
(
prefix
,
{
'template.openshift.io/requester-username'
:
user
.
metadata
.
name
// `generateNameLength - 1` because we append a '-' and then a 5 char generated suffix
};
length
:
DNS1123_SUBDOMAIN_VALIDATION
.
maxlength
-
generateNameLength
-
1
,
omission
:
''
});
});
}
return
$q
.
when
({}
);
return
generateName
(
secretNamePrefix
,
generateNameLength
);
};
};
var
generateName
=
$filter
(
'generateName'
);
var
makeParametersSecret
=
function
(
secretName
,
parameters
,
binding
)
{
var
makeBinding
=
function
(
serviceInstance
,
application
,
parameters
)
{
var
secret
=
{
apiVersion
:
'v1'
,
kind
:
'Secret'
,
metadata
:
{
name
:
secretName
,
ownerReferences
:
[{
apiVersion
:
binding
.
apiVersion
,
kind
:
binding
.
kind
,
name
:
binding
.
metadata
.
name
,
uid
:
binding
.
metadata
.
uid
,
controller
:
false
,
// TODO: Change to true when garbage collection works with service
// catalog resources. Setting to true now results in a 403 Forbidden
// error creating the secret.
blockOwnerDeletion
:
false
}]
},
type
:
'Opaque'
,
stringData
:
{}
};
secret
.
stringData
[
PARAMETERS_SECRET_KEY
]
=
JSON
.
stringify
(
parameters
);
return
secret
;
};
var
makeBinding
=
function
(
serviceInstance
,
application
,
parametersSecretName
)
{
var
parametersSecretName
;
var
instanceName
=
serviceInstance
.
metadata
.
name
;
var
instanceName
=
serviceInstance
.
metadata
.
name
;
var
relatedObjName
=
generateName
(
_
.
truncate
(
instanceName
,
DNS1123_SUBDOMAIN_VALIDATION
.
maxlength
-
6
)
+
'-'
);
var
binding
=
{
var
binding
=
{
kind
:
'Binding'
,
kind
:
'Binding'
,
apiVersion
:
'servicecatalog.k8s.io/v1alpha1'
,
apiVersion
:
'servicecatalog.k8s.io/v1alpha1'
,
...
@@ -2953,12 +2982,17 @@ angular.module("openshiftCommonServices")
...
@@ -2953,12 +2982,17 @@ angular.module("openshiftCommonServices")
instanceRef
:
{
instanceRef
:
{
name
:
instanceName
name
:
instanceName
},
},
secretName
:
relatedObjName
secretName
:
generateSecretName
(
serviceInstance
.
metadata
.
name
+
'-credentials-'
)
}
}
};
};
if
(
!
_
.
isEmpty
(
parameters
))
{
if
(
parametersSecretName
)
{
binding
.
spec
.
parameters
=
parameters
;
binding
.
spec
.
parametersFrom
=
[{
secretKeyRef
:
{
name
:
parametersSecretName
,
key
:
PARAMETERS_SECRET_KEY
}
}];
}
}
var
appSelector
=
_
.
get
(
application
,
'spec.selector'
);
var
appSelector
=
_
.
get
(
application
,
'spec.selector'
);
...
@@ -3070,18 +3104,34 @@ angular.module("openshiftCommonServices")
...
@@ -3070,18 +3104,34 @@ angular.module("openshiftCommonServices")
return
{
return
{
bindingResource
:
bindingResource
,
bindingResource
:
bindingResource
,
getServiceClassForInstance
:
getServiceClassForInstance
,
getServiceClassForInstance
:
getServiceClassForInstance
,
getPlanForInstance
:
getPlanForInstance
,
// Create a binding for `serviceInstance`. If an `application` API object
// Create a binding for `serviceInstance`. If an `application` API object
// is specified, also create a pod preset for that application using its
// is specified, also create a pod preset for that application using its
// `spec.selector`. `serviceClass` is required to determine if any
// `spec.selector`. `serviceClass` is required to determine if any
// parameters need to be set when creating the binding.
// parameters need to be set when creating the binding.
bindService
:
function
(
serviceInstance
,
application
,
serviceClass
)
{
bindService
:
function
(
serviceInstance
,
application
,
serviceClass
,
parameters
)
{
return
getBindParameters
(
serviceInstance
,
serviceClass
).
then
(
function
(
parameters
)
{
var
parametersSecretName
;
var
newBinding
=
makeBinding
(
serviceInstance
,
application
,
parameters
);
if
(
!
_
.
isEmpty
(
parameters
))
{
parametersSecretName
=
generateSecretName
(
serviceInstance
.
metadata
.
name
+
'-bind-parameters-'
);
}
var
newBinding
=
makeBinding
(
serviceInstance
,
application
,
parametersSecretName
);
var
context
=
{
var
context
=
{
namespace
:
serviceInstance
.
metadata
.
namespace
namespace
:
serviceInstance
.
metadata
.
namespace
};
};
return
DataService
.
create
(
bindingResource
,
null
,
newBinding
,
context
);
var
promise
=
DataService
.
create
(
bindingResource
,
null
,
newBinding
,
context
);
if
(
!
parametersSecretName
)
{
return
promise
;
}
// Create the secret as well if the binding has parameters.
return
promise
.
then
(
function
(
binding
)
{
var
parametersSecret
=
makeParametersSecret
(
parametersSecretName
,
parameters
,
binding
);
return
DataService
.
create
(
"secrets"
,
null
,
parametersSecret
,
context
).
then
(
function
()
{
return
binding
;
});
});
});
},
},
...
...
dist/origin-web-common.min.js
View file @
e25a7494
...
@@ -1158,7 +1158,7 @@ return data;
...
@@ -1158,7 +1158,7 @@ return data;
}
}
};
};
}),
angular
.
module
(
"openshiftCommonServices"
).
service
(
"BindingService"
,
[
"$filter"
,
"$q"
,
"AuthService"
,
"DataService"
,
"DNS1123_SUBDOMAIN_VALIDATION"
,
function
(
$filter
,
$q
,
AuthService
,
DataService
,
DNS1123_SUBDOMAIN_VALIDATION
)
{
}),
angular
.
module
(
"openshiftCommonServices"
).
service
(
"BindingService"
,
[
"$filter"
,
"$q"
,
"AuthService"
,
"DataService"
,
"DNS1123_SUBDOMAIN_VALIDATION"
,
function
(
$filter
,
$q
,
AuthService
,
DataService
,
DNS1123_SUBDOMAIN_VALIDATION
)
{
var
bindingResource
=
{
var
PARAMETERS_SECRET_KEY
=
"parameters"
,
bindingResource
=
{
group
:
"servicecatalog.k8s.io"
,
group
:
"servicecatalog.k8s.io"
,
resource
:
"bindings"
resource
:
"bindings"
},
getServiceClassForInstance
=
function
(
serviceInstance
,
serviceClasses
)
{
},
getServiceClassForInstance
=
function
(
serviceInstance
,
serviceClasses
)
{
...
@@ -1169,15 +1169,33 @@ var planName = _.get(serviceInstance, "spec.planName");
...
@@ -1169,15 +1169,33 @@ var planName = _.get(serviceInstance, "spec.planName");
return
_
.
find
(
serviceClass
.
plans
,
{
return
_
.
find
(
serviceClass
.
plans
,
{
name
:
planName
name
:
planName
});
});
},
getBindParameters
=
function
(
serviceInstance
,
serviceClass
)
{
},
generateName
=
$filter
(
"generateName"
),
generateSecretName
=
function
(
prefix
)
{
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
);
var
generateNameLength
=
5
,
secretNamePrefix
=
_
.
truncate
(
prefix
,
{
return
_
.
has
(
plan
,
[
"alphaBindingCreateParameterSchema"
,
"properties"
,
"template.openshift.io/requester-username"
])
?
AuthService
.
withUser
().
then
(
function
(
user
)
{
length
:
DNS1123_SUBDOMAIN_VALIDATION
.
maxlength
-
generateNameLength
-
1
,
return
{
omission
:
""
"template.openshift.io/requester-username"
:
user
.
metadata
.
name
});
return
generateName
(
secretNamePrefix
,
generateNameLength
);
},
makeParametersSecret
=
function
(
secretName
,
parameters
,
binding
)
{
var
secret
=
{
apiVersion
:
"v1"
,
kind
:
"Secret"
,
metadata
:{
name
:
secretName
,
ownerReferences
:[
{
apiVersion
:
binding
.
apiVersion
,
kind
:
binding
.
kind
,
name
:
binding
.
metadata
.
name
,
uid
:
binding
.
metadata
.
uid
,
controller
:
!
1
,
blockOwnerDeletion
:
!
1
}
]
},
type
:
"Opaque"
,
stringData
:{}
};
};
})
:
$q
.
when
({})
;
return
secret
.
stringData
[
PARAMETERS_SECRET_KEY
]
=
JSON
.
stringify
(
parameters
),
secret
;
},
generateName
=
$filter
(
"generateName"
),
makeBinding
=
function
(
serviceInstance
,
application
,
parameters
)
{
},
makeBinding
=
function
(
serviceInstance
,
application
,
parametersSecretName
)
{
var
instanceName
=
serviceInstance
.
metadata
.
name
,
relatedObjName
=
generateName
(
_
.
truncate
(
instanceName
,
DNS1123_SUBDOMAIN_VALIDATION
.
maxlength
-
6
)
+
"-"
)
,
binding
=
{
var
parametersSecretName
,
instanceName
=
serviceInstance
.
metadata
.
name
,
binding
=
{
kind
:
"Binding"
,
kind
:
"Binding"
,
apiVersion
:
"servicecatalog.k8s.io/v1alpha1"
,
apiVersion
:
"servicecatalog.k8s.io/v1alpha1"
,
metadata
:{
metadata
:{
...
@@ -1187,10 +1205,15 @@ spec:{
...
@@ -1187,10 +1205,15 @@ spec:{
instanceRef
:{
instanceRef
:{
name
:
instanceName
name
:
instanceName
},
},
secretName
:
relatedObjName
secretName
:
generateSecretName
(
serviceInstance
.
metadata
.
name
+
"-credentials-"
)
}
}
};
};
_
.
isEmpty
(
parameters
)
||
(
binding
.
spec
.
parameters
=
parameters
);
parametersSecretName
&&
(
binding
.
spec
.
parametersFrom
=
[
{
secretKeyRef
:{
name
:
parametersSecretName
,
key
:
PARAMETERS_SECRET_KEY
}
}
]);
var
appSelector
=
_
.
get
(
application
,
"spec.selector"
);
var
appSelector
=
_
.
get
(
application
,
"spec.selector"
);
return
appSelector
&&
(
appSelector
.
matchLabels
||
appSelector
.
matchExpressions
||
(
appSelector
=
{
return
appSelector
&&
(
appSelector
.
matchLabels
||
appSelector
.
matchExpressions
||
(
appSelector
=
{
matchLabels
:
appSelector
matchLabels
:
appSelector
...
@@ -1230,13 +1253,19 @@ return _.get(item, "metadata.name", "");
...
@@ -1230,13 +1253,19 @@ return _.get(item, "metadata.name", "");
return
{
return
{
bindingResource
:
bindingResource
,
bindingResource
:
bindingResource
,
getServiceClassForInstance
:
getServiceClassForInstance
,
getServiceClassForInstance
:
getServiceClassForInstance
,
bindService
:
function
(
serviceInstance
,
application
,
serviceClass
)
{
getPlanForInstance
:
getPlanForInstance
,
return
getBindParameters
(
serviceInstance
,
serviceClass
).
then
(
function
(
parameters
)
{
bindService
:
function
(
serviceInstance
,
application
,
serviceClass
,
parameters
)
{
var
newBinding
=
makeBinding
(
serviceInstance
,
application
,
parameters
),
context
=
{
var
parametersSecretName
;
_
.
isEmpty
(
parameters
)
||
(
parametersSecretName
=
generateSecretName
(
serviceInstance
.
metadata
.
name
+
"-bind-parameters-"
));
var
newBinding
=
makeBinding
(
serviceInstance
,
application
,
parametersSecretName
),
context
=
{
namespace
:
serviceInstance
.
metadata
.
namespace
namespace
:
serviceInstance
.
metadata
.
namespace
};
},
promise
=
DataService
.
create
(
bindingResource
,
null
,
newBinding
,
context
);
return
DataService
.
create
(
bindingResource
,
null
,
newBinding
,
context
);
return
parametersSecretName
?
promise
.
then
(
function
(
binding
)
{
var
parametersSecret
=
makeParametersSecret
(
parametersSecretName
,
parameters
,
binding
);
return
DataService
.
create
(
"secrets"
,
null
,
parametersSecret
,
context
).
then
(
function
()
{
return
binding
;
});
});
})
:
promise
;
},
},
isServiceBindable
:
isServiceBindable
,
isServiceBindable
:
isServiceBindable
,
getPodPresetSelectorsForBindings
:
getPodPresetSelectorsForBindings
,
getPodPresetSelectorsForBindings
:
getPodPresetSelectorsForBindings
,
...
...
src/services/bindService.js
View file @
e25a7494
...
@@ -7,6 +7,9 @@ angular.module("openshiftCommonServices")
...
@@ -7,6 +7,9 @@ angular.module("openshiftCommonServices")
AuthService
,
AuthService
,
DataService
,
DataService
,
DNS1123_SUBDOMAIN_VALIDATION
)
{
DNS1123_SUBDOMAIN_VALIDATION
)
{
// The secret key this service uses for the parameters JSON blob when binding.
var
PARAMETERS_SECRET_KEY
=
'parameters'
;
var
bindingResource
=
{
var
bindingResource
=
{
group
:
'servicecatalog.k8s.io'
,
group
:
'servicecatalog.k8s.io'
,
resource
:
'bindings'
resource
:
'bindings'
...
@@ -22,23 +25,49 @@ angular.module("openshiftCommonServices")
...
@@ -22,23 +25,49 @@ angular.module("openshiftCommonServices")
return
_
.
find
(
serviceClass
.
plans
,
{
name
:
planName
});
return
_
.
find
(
serviceClass
.
plans
,
{
name
:
planName
});
};
};
var
getBindParameters
=
function
(
serviceInstance
,
serviceClass
)
{
var
generateName
=
$filter
(
'generateName'
);
var
plan
=
getPlanForInstance
(
serviceInstance
,
serviceClass
);
var
generateSecretName
=
function
(
prefix
)
{
if
(
_
.
has
(
plan
,
[
'alphaBindingCreateParameterSchema'
,
'properties'
,
'template.openshift.io/requester-username'
]))
{
var
generateNameLength
=
5
;
return
AuthService
.
withUser
().
then
(
function
(
user
)
{
// Truncate the class name if it's too long to append the generated name suffix.
return
{
var
secretNamePrefix
=
_
.
truncate
(
prefix
,
{
'template.openshift.io/requester-username'
:
user
.
metadata
.
name
// `generateNameLength - 1` because we append a '-' and then a 5 char generated suffix
};
length
:
DNS1123_SUBDOMAIN_VALIDATION
.
maxlength
-
generateNameLength
-
1
,
omission
:
''
});
});
}
return
$q
.
when
({}
);
return
generateName
(
secretNamePrefix
,
generateNameLength
);
};
};
var
generateName
=
$filter
(
'generateName'
);
var
makeParametersSecret
=
function
(
secretName
,
parameters
,
binding
)
{
var
makeBinding
=
function
(
serviceInstance
,
application
,
parameters
)
{
var
secret
=
{
apiVersion
:
'v1'
,
kind
:
'Secret'
,
metadata
:
{
name
:
secretName
,
ownerReferences
:
[{
apiVersion
:
binding
.
apiVersion
,
kind
:
binding
.
kind
,
name
:
binding
.
metadata
.
name
,
uid
:
binding
.
metadata
.
uid
,
controller
:
false
,
// TODO: Change to true when garbage collection works with service
// catalog resources. Setting to true now results in a 403 Forbidden
// error creating the secret.
blockOwnerDeletion
:
false
}]
},
type
:
'Opaque'
,
stringData
:
{}
};
secret
.
stringData
[
PARAMETERS_SECRET_KEY
]
=
JSON
.
stringify
(
parameters
);
return
secret
;
};
var
makeBinding
=
function
(
serviceInstance
,
application
,
parametersSecretName
)
{
var
parametersSecretName
;
var
instanceName
=
serviceInstance
.
metadata
.
name
;
var
instanceName
=
serviceInstance
.
metadata
.
name
;
var
relatedObjName
=
generateName
(
_
.
truncate
(
instanceName
,
DNS1123_SUBDOMAIN_VALIDATION
.
maxlength
-
6
)
+
'-'
);
var
binding
=
{
var
binding
=
{
kind
:
'Binding'
,
kind
:
'Binding'
,
apiVersion
:
'servicecatalog.k8s.io/v1alpha1'
,
apiVersion
:
'servicecatalog.k8s.io/v1alpha1'
,
...
@@ -49,12 +78,17 @@ angular.module("openshiftCommonServices")
...
@@ -49,12 +78,17 @@ angular.module("openshiftCommonServices")
instanceRef
:
{
instanceRef
:
{
name
:
instanceName
name
:
instanceName
},
},
secretName
:
relatedObjName
secretName
:
generateSecretName
(
serviceInstance
.
metadata
.
name
+
'-credentials-'
)
}
}
};
};
if
(
!
_
.
isEmpty
(
parameters
))
{
if
(
parametersSecretName
)
{
binding
.
spec
.
parameters
=
parameters
;
binding
.
spec
.
parametersFrom
=
[{
secretKeyRef
:
{
name
:
parametersSecretName
,
key
:
PARAMETERS_SECRET_KEY
}
}];
}
}
var
appSelector
=
_
.
get
(
application
,
'spec.selector'
);
var
appSelector
=
_
.
get
(
application
,
'spec.selector'
);
...
@@ -166,18 +200,34 @@ angular.module("openshiftCommonServices")
...
@@ -166,18 +200,34 @@ angular.module("openshiftCommonServices")
return
{
return
{
bindingResource
:
bindingResource
,
bindingResource
:
bindingResource
,
getServiceClassForInstance
:
getServiceClassForInstance
,
getServiceClassForInstance
:
getServiceClassForInstance
,
getPlanForInstance
:
getPlanForInstance
,
// Create a binding for `serviceInstance`. If an `application` API object
// Create a binding for `serviceInstance`. If an `application` API object
// is specified, also create a pod preset for that application using its
// is specified, also create a pod preset for that application using its
// `spec.selector`. `serviceClass` is required to determine if any
// `spec.selector`. `serviceClass` is required to determine if any
// parameters need to be set when creating the binding.
// parameters need to be set when creating the binding.
bindService
:
function
(
serviceInstance
,
application
,
serviceClass
)
{
bindService
:
function
(
serviceInstance
,
application
,
serviceClass
,
parameters
)
{
return
getBindParameters
(
serviceInstance
,
serviceClass
).
then
(
function
(
parameters
)
{
var
parametersSecretName
;
var
newBinding
=
makeBinding
(
serviceInstance
,
application
,
parameters
);
if
(
!
_
.
isEmpty
(
parameters
))
{
parametersSecretName
=
generateSecretName
(
serviceInstance
.
metadata
.
name
+
'-bind-parameters-'
);
}
var
newBinding
=
makeBinding
(
serviceInstance
,
application
,
parametersSecretName
);
var
context
=
{
var
context
=
{
namespace
:
serviceInstance
.
metadata
.
namespace
namespace
:
serviceInstance
.
metadata
.
namespace
};
};
return
DataService
.
create
(
bindingResource
,
null
,
newBinding
,
context
);
var
promise
=
DataService
.
create
(
bindingResource
,
null
,
newBinding
,
context
);
if
(
!
parametersSecretName
)
{
return
promise
;
}
// Create the secret as well if the binding has parameters.
return
promise
.
then
(
function
(
binding
)
{
var
parametersSecret
=
makeParametersSecret
(
parametersSecretName
,
parameters
,
binding
);
return
DataService
.
create
(
"secrets"
,
null
,
parametersSecret
,
context
).
then
(
function
()
{
return
binding
;
});
});
});
},
},
...
...
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