MT#9177 Add credentials as device fields logic

changes/52/552/1
Irina Peshinskaya 11 years ago
parent ea3d731bf2
commit bcd8c30efd

@ -259,7 +259,10 @@ sub POST :Allow {
try {
my $sync_parameters = NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_parameters_prefetch($c, undef, $resource);
my $credentials = NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_credentials_prefetch($c, undef, $resource);
NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_clear($c, $resource);
$item = $c->model('DB')->resultset('autoprov_devices')->create($resource);
NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_credentials_store($c, $item, $credentials);
NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_parameters_store($c, $item, $sync_parameters);
foreach my $range(@{ $linerange }) {

@ -180,7 +180,10 @@ sub devmod_create :Chained('base') :PathPart('model/create') :Args(0) :Does(ACL)
my $linerange = delete $form->params->{linerange};
my $sync_parameters = NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_parameters_prefetch($c, undef, $form->params);
my $credentials = NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_credentials_prefetch($c, undef, $form->params);
NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_clear($c, $form->params);
my $devmod = $schema->resultset('autoprov_devices')->create($form->params);
NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_credentials_store($c, $devmod, $credentials);
NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_parameters_store($c, $devmod, $sync_parameters);
foreach my $range(@{ $linerange }) {
@ -347,9 +350,12 @@ sub devmod_edit :Chained('devmod_base') :PathPart('edit') :Args(0) :Does(ACL) :A
my $linerange = delete $form->params->{linerange};
my $sync_parameters = NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_parameters_prefetch($c, $c->stash->{devmod}, $form->params);
my $credentials = NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_credentials_prefetch($c, $c->stash->{devmod}, $form->params);
NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_clear($c, $form->params);
$c->stash->{devmod}->update($form->params);
NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_credentials_store($c, $c->stash->{devmod}, $credentials);
$schema->resultset('autoprov_sync')->search_rs({
device_id => $c->stash->{devmod}->id,
})->delete;

@ -158,7 +158,13 @@ sub update_item {
}
my $sync_parameters = NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_parameters_prefetch($c, $item, $resource);
my $credentials = NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_credentials_prefetch($c, $item, $resource);
NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_clear($c, $resource);
$item->update($resource);
$c->model('DB')->resultset('autoprov_sync')->search_rs({
device_id => $item->id,
})->delete;
NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_credentials_store($c, $item, $credentials);
NGCP::Panel::Utils::DeviceBootstrap::devmod_sync_parameters_store($c, $item, $sync_parameters);
my @existing_range = ();

@ -53,12 +53,41 @@ sub devmod_sync_parameters_prefetch{
};
push @parameters,$sync_parameter;
}
return \@parameters;
}
sub devmod_sync_credentials_prefetch{
my($c,$devmod,$params) = @_;
my $schema = $c->model('DB');
my $bootstrap_method = $params->{'bootstrap_method'};
my $credentials = {
device_id => $devmod ? $devmod->id : undef,
};
foreach (qw/user password/){
$credentials->{$_} = delete $params->{'bootstrap_config_'.$bootstrap_method.'_'.$_};
}
return $credentials;
}
sub devmod_sync_credentials_store{
my($c,$devmod,$credentials) = @_;
my $schema = $c->model('DB');
my $credentials_rs = $schema->resultset('autoprov_redirect_credentials')->search_rs({
'device_id' => $devmod->id
});
if(!$credentials_rs->first){
$credentials->{device_id} = $devmod->id;
$schema->resultset('autoprov_redirect_credentials')->create($credentials);
}else{
$credentials_rs->update($credentials);
}
}
sub devmod_sync_clear {
my($c,$params) = @_;
foreach (keys %$params){
if($_ =~/^bootstrap_config_/i){
delete $params->{$_};
}
}
return \@parameters;
}
sub devmod_sync_parameters_store {
my($c,$devmod,$sync_parameters) = @_;

@ -13,13 +13,17 @@ function bootstrapDynamicFields(selectedValue){
$('.ngcp-bootstrap-config-'+selectedValue).css("display","block");
}
function vendor2bootstrapMethod(vendorField){
if(!vendorField){
var bootstrapMethodFields = document.getElementsByName('bootstrap_method');
var bootstrapMethodField;
if(!vendorField){//initial load - no vendor field passed at all
bootstrapMethodFields = document.getElementsByName('bootstrap_method');
if(bootstrapMethodFields && bootstrapMethodFields.length){
vendorField = bootstrapMethodFields[0].form['vendor'];
bootstrapMethodField = bootstrapMethodFields[0];//we will use default defined in Perl module to show linked fields
vendorField = bootstrapMethodField.form['vendor'];//for load after error - we will check if it's value isn't empty
}
}else{
bootstrapMethodField = vendorField.form['bootstrap_method'];
}
if(vendorField){
if(vendorField && vendorField.value){//onchange and on load after error
var bootstrapMethod='';
switch(vendorField.value.toLowerCase()){
case "cisco":
@ -39,15 +43,18 @@ function vendor2bootstrapMethod(vendorField){
break;
;
}
var bootstrapMethodField = vendorField.form['bootstrap_method'];
var length = bootstrapMethodField.options.length;
for(var i=0; i < length; i++){
if(bootstrapMethodField.options[i].value == bootstrapMethod){
bootstrapMethodField.options[i].selected = true;
if(bootstrapMethod){
var length = bootstrapMethodField.options.length;
for(var i=0; i < length; i++){
if(bootstrapMethodField.options[i].value == bootstrapMethod){
bootstrapMethodField.options[i].selected = true;
}
}
}
bootstrapDynamicFields(bootstrapMethod);
}else if(bootstrapMethodField){//as said above - for initial load, to use Perl defined select default to show linked fields
bootstrapMethod = bootstrapMethodField.options[bootstrapMethodField.selectedIndex].value;
}
bootstrapDynamicFields(bootstrapMethod);
}
$( document ).ready(function() {
vendor2bootstrapMethod();

Loading…
Cancel
Save