diff --git a/build/ci/.build-container.yml b/build/ci/.build-container.yml index 84f616335b3ba288722ae8608e659f72fc120529..e1e6107d56fe9a6a1f14491641da3bfd9a72f83a 100644 --- a/build/ci/.build-container.yml +++ b/build/ci/.build-container.yml @@ -40,4 +40,4 @@ build-docker: - docker tag $DOCKER_IMAGE_SHA $TAG - docker push $TAG - docker build --target installer --build-arg GITLAB_USER=$GO_MODULES_USER --build-arg GITLAB_TOKEN=$GO_MODULES_ACCESS_TOKEN --build-arg BUILDARGS=$BUILDARGS -t ${CI_REGISTRY_IMAGE}:testing_${CI_PIPELINE_ID} . - - docker push ${CI_REGISTRY_IMAGE}:testing_${CI_PIPELINE_ID} \ No newline at end of file + - docker push ${CI_REGISTRY_IMAGE}:testing_${CI_PIPELINE_ID} diff --git a/build/ci/.code-quality-ci.yml b/build/ci/.code-quality-ci.yml index eacbfe4b6495fe32fc80002a5c53b432084b3893..a608dd15e896e417aa25e19ee8657c037aa3e75e 100644 --- a/build/ci/.code-quality-ci.yml +++ b/build/ci/.code-quality-ci.yml @@ -12,4 +12,4 @@ code-quality: reports: codequality: gl-code-quality-report.json paths: - - gl-code-quality-report.json \ No newline at end of file + - gl-code-quality-report.json diff --git a/build/ci/.containerlab-ci.yml b/build/ci/.containerlab-ci.yml index f968e0a136f22c954d7d0077fafe1cee99924a86..9a06ec3b3aaf9e63b8f9f153126bb46e67b428c4 100644 --- a/build/ci/.containerlab-ci.yml +++ b/build/ci/.containerlab-ci.yml @@ -1,4 +1,3 @@ - variables: CEOS_CONTAINER_IMAGE: "$CI_REGISTRY_IMAGE/ceos:latest" CLAB_INT1_TEMPLATE: "${CI_PROJECT_DIR}/test/containerlab/int01.clab.yml" @@ -13,17 +12,6 @@ variables: - if: $CI_NIGHTLY -.containerlab_template: &containerlab_template - tags: - - shell - before_script: - - cd ${CLAB_DIR} - - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - - echo $DOCKER_IMAGE_SHA - - docker pull $DOCKER_IMAGE_SHA - - docker pull ${CEOS_CONTAINER_IMAGE} - - containerlab:template: extends: .containerlab_rules image: alpine:latest @@ -50,10 +38,17 @@ containerlab:template: containerlab:deploy: extends: - - .containerlab_template - .containerlab_rules stage: apply needs: ["containerlab:template", "build-docker"] + tags: + - shell + before_script: + - cd ${CLAB_DIR} + - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY + - echo $DOCKER_IMAGE_SHA + - docker pull $DOCKER_IMAGE_SHA + - docker pull ${CEOS_CONTAINER_IMAGE} script: - sudo containerlab deploy --topo ${CI_PROJECT_DIR}/${CLAB_NAME}.clab.yml --reconfigure - echo "GOSDN_HTTP_PORT=$(docker inspect -f '{{ (index (index .NetworkSettings.Ports "8080/tcp") 0).HostPort }}' clab-${CLAB_NAME}-gosdn)" >> ${CI_PROJECT_DIR}/build.env @@ -66,6 +61,13 @@ containerlab:deploy: dotenv: ${CI_PROJECT_DIR}/build.env containerlab:destroy: + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'develop') + when: always + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + when: always + - if: $CI_NIGHTLY + when: always stage: .post tags: - shell @@ -78,4 +80,3 @@ containerlab:destroy: allow_failure: true dependencies: - containerlab:template - when: always diff --git a/northbound/server/pnd.go b/northbound/server/pnd.go index 887ded7dccc5ef9adfb069b403cf109c4e34f092..897102483d8e6fce670caba84f2bdd93c59b4a7e 100644 --- a/northbound/server/pnd.go +++ b/northbound/server/pnd.go @@ -8,8 +8,6 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "code.fbi.h-da.de/cocsn/gosdn/interfaces/device" - ppb "code.fbi.h-da.de/cocsn/api/go/gosdn/pnd" spb "code.fbi.h-da.de/cocsn/api/go/gosdn/southbound" "code.fbi.h-da.de/cocsn/gosdn/interfaces/networkdomain" @@ -211,44 +209,46 @@ func fillSbis(pnd networkdomain.NetworkDomain, all bool, sid ...string) ([]*spb. func fillOnds(pnd networkdomain.NetworkDomain, all bool, did ...string) ([]*ppb.OrchestratedNetworkingDevice, error) { var ondList []uuid.UUID + var onds []*ppb.OrchestratedNetworkingDevice + // all decides if a client wants all devices or only a single one switch all { case true: ondList = pnd.Devices() + onds = make([]*ppb.OrchestratedNetworkingDevice, len(ondList)) default: - var err error if len(did) == 0 { - return nil, &errors.ErrInvalidParameters{ + err := &errors.ErrInvalidParameters{ Func: fillOnds, Param: "length of 'did' cannot be '0' when 'all' is set to 'false'", } - } - ondList, err = stringToUUID(did) - if err != nil { log.Error(err) - return nil, status.Errorf(codes.Aborted, "%v", err) + + return nil, err } + + onds = make([]*ppb.OrchestratedNetworkingDevice, 1) } - onds := make([]*ppb.OrchestratedNetworkingDevice, len(ondList)) - for i, id := range ondList { - d, err := pnd.GetDevice(id.String()) + for i, id := range did { + d, err := pnd.GetDevice(id) if err != nil { log.Error(err) return nil, status.Errorf(codes.Aborted, "%v", err) } cfg := ygot.GNMINotificationsConfig{} - dev, err := ygot.TogNMINotifications(d.(device.Device).Model(), time.Now().UnixNano(), cfg) + dev, err := ygot.TogNMINotifications(d.Model(), time.Now().UnixNano(), cfg) if err != nil { log.Error(err) return nil, status.Errorf(codes.Aborted, "%v", err) } onds[i] = &ppb.OrchestratedNetworkingDevice{ - Id: id.String(), - Name: "", + Id: id, + Name: d.Name(), Device: dev, } } + return onds, nil } diff --git a/nucleus/store.go b/nucleus/store.go index 631da74785b9a381530f485ee47f0931b1001e2f..3742c1ea89495a061512b45d0d15498aba4484df 100644 --- a/nucleus/store.go +++ b/nucleus/store.go @@ -224,7 +224,7 @@ func (s DeviceStore) GetDevice(id uuid.UUID, parseErrors ...error) (device.Devic } } log.WithFields(log.Fields{ - "uuid": id, + "uuid": foundID, "name": d.Name(), }).Debug("device was accessed")